diff --git a/common/content/hints.js b/common/content/hints.js index 73059aae..3b598f3e 100644 --- a/common/content/hints.js +++ b/common/content/hints.js @@ -301,7 +301,8 @@ var HintSession = Class("HintSession", CommandMode, { if (!rect.width || !rect.height) if (!Array.some(elem.childNodes, function (elem) elem instanceof Element && DOM(elem).style.float != "none" && isVisible(elem))) - return false; + if (elem.textContent || !elem.name) + return false; let computedStyle = doc.defaultView.getComputedStyle(elem, null); if (computedStyle.visibility != "visible" || computedStyle.display == "none") @@ -763,7 +764,7 @@ var Hints = Module("hints", { this.addMode("Y", "Yank hint description", function (elem) editor.setRegister(null, elem.textContent || "", true)); this.addMode("A", "Yank hint anchor url", function (elem) { let uri = elem.ownerDocument.documentURIObject.clone(); - uri.ref = elem.id; + uri.ref = elem.id || elem.name; dactyl.clipboardWrite(uri.spec, true); }); this.addMode("c", "Open context menu", function (elem) DOM(elem).contextmenu()); @@ -1276,7 +1277,7 @@ var Hints = Module("hints", { "regexpmap", { "[iI]": "img", "[asOTvVWy]": [":-moz-any-link", "area[href]", "img[src]", "iframe[src]"], - "[A]": ["[id],a[name]"], + "[A]": ["[id]", "a[name]"], "[f]": "body", "[F]": ["body", "code", "div", "html", "p", "pre", "span"], "[S]": ["input:not([type=hidden])", "textarea", "button", "select"] diff --git a/common/modules/bootstrap.jsm b/common/modules/bootstrap.jsm index 4343ec21..7145110b 100644 --- a/common/modules/bootstrap.jsm +++ b/common/modules/bootstrap.jsm @@ -123,8 +123,9 @@ else }, cleanup: function unregister() { - for each (let factory in this.factories.splice(0)) + for each (let factory in this.factories) this.manager.unregisterFactory(factory.classID, factory); + this.factories = {}; }, purge: function purge() { @@ -185,11 +186,15 @@ else }), registerFactory: function registerFactory(factory) { + if (Set.has(this.factories, factory.contractID)) + this.manager.unregisterFactory(this.factories[factory.contractID].classID, + this.factories[factory.contractID]); + this.manager.registerFactory(factory.classID, String(factory.classID), factory.contractID, factory); - this.factories.push(factory); + this.factories[factory.contractID] = factory; } }; diff --git a/pentadactyl/install.rdf b/pentadactyl/install.rdf index cfb6027f..3ef9b7c7 100644 --- a/pentadactyl/install.rdf +++ b/pentadactyl/install.rdf @@ -8,7 +8,8 @@ em:version="1.0rc2pre" em:description="Firefox for Vim and Links addicts" em:homepageURL="http://dactyl.sourceforge.net/pentadactyl" - em:bootstrap="true"> + em:bootstrap="true" + em:strictCompatibility="true"> Kris Maglione, Doug Kearns Kris Maglione @@ -31,7 +32,7 @@ + em:maxVersion="13.*"/>