1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-09 10:24:11 +01:00

[bootstrap] Changes toward proper reinitialization after disabling.

--HG--
branch : bootstrapped
This commit is contained in:
Kris Maglione
2010-12-24 15:51:02 -05:00
parent 0d8f23fea5
commit 2f081bd805
7 changed files with 269 additions and 238 deletions

View File

@@ -55,10 +55,13 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference])
},
cleanup: function cleanup() {
for (let win in iter(services.windowMediator.getEnumerator(null)))
for (let elem in values(win.document.dactylOverlayElements))
for (let win in iter(services.windowMediator.getEnumerator(null))) {
for (let elem in values(win.document.dactylOverlayElements || []))
if (elem.get() && elem.get().parentNode)
elem.get().parentNode.removeChild(elem.get());
delete win.document.dactylOverlayElements;
delete win.document.dactylOverlays;
}
},
// FIXME: Only works for Pentadactyl
@@ -962,6 +965,7 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference])
observe: {
"dactyl-cleanup": function () {
util.dump("dactyl: util: observe: dactyl-cleanup");
// Let window cleanup functions run synchronously before we
// destroy modules.
util.timeout(function () {
@@ -969,6 +973,9 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference])
if (module.cleanup)
module.cleanup();
services.observer.addObserver(this, "dactyl-rehash", true);
/*
let getOwnPropertyNames = Object.getOwnPropertyNames;
for each (let global in defineModule.globals.reverse())
for each (let k in getOwnPropertyNames(global))
@@ -976,8 +983,17 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference])
delete global[k];
}
catch (e) {}
*/
});
},
"dactyl-rehash": function () {
util.dump("dactyl: util: observe: dactyl-rehash");
for (let module in values(defineModule.modules))
if (module.reinit)
module.reinit();
else
module.init();
},
"toplevel-window-ready": function (window, data) {
window.addEventListener("DOMContentLoaded", wrapCallback(function listener(event) {
if (event.originalTarget === window.document) {