1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-20 18:07:58 +01:00

Don't fight stuff for focus. Maybe closes #982.

This commit is contained in:
Kris Maglione
2014-03-13 21:03:22 -07:00
parent 244434bd64
commit cb11523659
4 changed files with 27 additions and 13 deletions

7
common/bootstrap.js vendored
View File

@@ -178,9 +178,11 @@ let JSMLoader = {
// Cuts down on stupid, fscking url mangling.
get loadSubScript() bootstrap_jsm.loadSubScript,
cleanup: function unregister() {
for each (let factory in this.factories.splice(0))
cleanup: function cleanup() {
for (let factory of this.factories.splice(0)) {
debug("bootstrap: unregister factory: " + factory.classID);
manager.unregisterFactory(factory.classID, factory);
}
},
Factory: function Factory(class_) ({
@@ -202,6 +204,7 @@ let JSMLoader = {
}),
registerFactory: function registerFactory(factory) {
debug("bootstrap: register factory: " + factory.classID + " " + factory.contractID);
manager.registerFactory(factory.classID,
String(factory.classID),
factory.contractID,

View File

@@ -188,6 +188,11 @@ var Events = Module("events", {
this.listen(window, this, "events", true);
this.listen(window, this.popups, "events", true);
this.grabFocus = 0;
this.grabFocusTimer = Timer(100, 10000, () => {
this.grabFocus = 0;
});
},
cleanup: function cleanup() {
@@ -616,12 +621,16 @@ var Events = Module("events", {
Ci.nsIDOMHTMLSelectElement,
Ci.nsIDOMHTMLTextAreaElement,
Ci.nsIDOMWindow])) {
if (this.grabFocus++ > 5)
; // Something is fighting us. Give up.
else {
this.grabFocusTimer.tell();
if (elem.frameElement)
dactyl.focusContent(true);
else if (!(elem instanceof Window) || Editor.getEditor(elem))
dactyl.focus(window);
}
}
if (elem instanceof Element)
delete overlay.getData(elem)["focus-allowed"];

View File

@@ -53,10 +53,14 @@ var ConfigBase = Class("ConfigBase", {
this.loadConfig();
util.trapErrors(() => {
JSMLoader.registerFactory(JSMLoader.Factory(AboutHandler));
});
util.withProperErrors(() => {
JSMLoader.registerFactory(JSMLoader.Factory(
Protocol("dactyl", "{9c8f2530-51c8-4d41-b356-319e0b155c44}",
"resource://dactyl-content/")));
});
this.protocolLoaded = true;
this.timeout(function () {

View File

@@ -1174,8 +1174,6 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
util.trapErrors(module.cleanup, module, reason);
}
JSMLoader.cleanup();
if (!this.rehashing)
services.observer.addObserver(this, "dactyl-rehash", true);
},