diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/content/bookmarks.js | 12 | ||||
-rw-r--r-- | common/content/buffer.js | 8 | ||||
-rw-r--r-- | common/modules/bookmarkcache.jsm | 6 |
3 files changed, 12 insertions, 14 deletions
diff --git a/common/content/bookmarks.js b/common/content/bookmarks.js index 89ee37cc..52c1ecee 100644 --- a/common/content/bookmarks.js +++ b/common/content/bookmarks.js @@ -192,8 +192,8 @@ var Bookmarks = Module("bookmarks", { let aliases = {}; return iter(services.browserSearch.getVisibleEngines({})).map(function ([, engine]) { let alias = engine.alias; - if (!alias || !/^[a-z-]+$/.test(alias)) - alias = engine.name.replace(/[^a-z_-]+/gi, "-").replace(/^-|-$/, "").toLowerCase(); + if (!alias || !/^[a-z0-9-]+$/.test(alias)) + alias = engine.name.replace(/[^a-z0-9]+/gi, "-").replace(/^-|-$/, "").toLowerCase(); if (!alias) alias = "search"; // for search engines which we can't find a suitable alias @@ -249,12 +249,6 @@ var Bookmarks = Module("bookmarks", { }, /** - * Returns an array of bookmark keyword objects. - * @deprecated - */ - getKeywords: function getKeywords() bookmarkcache.keywords, - - /** * Returns an array containing a search URL and POST data for the * given search string. If *useDefsearch* is true, the string is * always passed to the default search engine. If it is not, the @@ -600,7 +594,7 @@ var Bookmarks = Module("bookmarks", { completion.search = function search(context, noSuggest) { let [, keyword, space, args] = context.filter.match(/^\s*(\S*)(\s*)(.*)$/); - let keywords = bookmarks.getKeywords(); + let keywords = bookmarkcache.keywords; let engines = bookmarks.searchEngines; context.title = ["Search Keywords"]; diff --git a/common/content/buffer.js b/common/content/buffer.js index 146daf9b..3c5f9cb8 100644 --- a/common/content/buffer.js +++ b/common/content/buffer.js @@ -324,13 +324,13 @@ var Buffer = Module("buffer", { if (win && uri) { statusline.progress = win.dactylProgress; - let oldURI = webProgress.document.dactylURI; - if (webProgress.document.dactylLoadIdx === webProgress.loadedTransIndex + let oldURI = win.document.dactylURI; + if (win.document.dactylLoadIdx === webProgress.loadedTransIndex || !oldURI || uri.spec.replace(/#.*/, "") !== oldURI.replace(/#.*/, "")) for (let frame in values(buffer.allFrames(win))) frame.document.dactylFocusAllowed = false; - webProgress.document.dactylURI = uri.spec; - webProgress.document.dactylLoadIdx = webProgress.loadedTransIndex; + win.document.dactylURI = uri.spec; + win.document.dactylLoadIdx = webProgress.loadedTransIndex; } // Workaround for bugs 591425 and 606877, dactyl bug #81 diff --git a/common/modules/bookmarkcache.jsm b/common/modules/bookmarkcache.jsm index 89de5164..afaa56b9 100644 --- a/common/modules/bookmarkcache.jsm +++ b/common/modules/bookmarkcache.jsm @@ -63,7 +63,7 @@ var BookmarkCache = Module("BookmarkCache", XPCOM(Ci.nsINavBookmarkObserver), { get bookmarks() Class.replaceProperty(this, "bookmarks", this.load()), - get keywords() array.toObject([[b.keyword, b] for (b in this) if (b.keyword)]), + keywords: Class.memoize(function () array.toObject([[b.keyword, b] for (b in this) if (b.keyword)])), rootFolders: ["toolbarFolder", "bookmarksMenuFolder", "unfiledBookmarksFolder"] .map(function (s) services.bookmarks[s]), @@ -185,11 +185,13 @@ var BookmarkCache = Module("BookmarkCache", XPCOM(Ci.nsINavBookmarkObserver), { let bmark = this._loadBookmark(this.readBookmark(itemId)); this.bookmarks[bmark.id] = bmark; storage.fireEvent(name, "add", bmark); + delete this.keywords; } } }, onItemRemoved: function onItemRemoved(itemId, folder, index) { let result = this._deleteBookmark(itemId); + delete this.keywords; if (result) storage.fireEvent(name, "remove", result); }, @@ -204,6 +206,8 @@ var BookmarkCache = Module("BookmarkCache", XPCOM(Ci.nsINavBookmarkObserver), { let bookmark = this.bookmarks[itemId]; if (bookmark) { + if (property == "keyword") + delete this.keywords; if (property == "tags") value = services.tagging.getTagsForURI(bookmark.uri, {}); if (property in bookmark) { |