1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-06 19:14:11 +01:00

Minorish changes.

This commit is contained in:
Kris Maglione
2011-09-03 09:12:13 -04:00
parent 532f2a10ab
commit 91cbb9dacb
14 changed files with 273 additions and 216 deletions

View File

@@ -189,7 +189,7 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen
var { modules, Module } = window.dactyl.modules;
delete window.dactyl;
const start = Date.now();
this.startTime = Date.now();
const deferredInit = { load: {} };
const seen = Set();
const loaded = Set();
@@ -268,6 +268,8 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen
});
function frob(name) { values(deferredInit[name] || {}).forEach(call); }
this.frob = frob;
this.modules = modules;
frobModules();
frob("init");
@@ -289,21 +291,6 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen
});
});
function finish() {
// Module.list.forEach(load);
frob("load");
modules.times = update({}, defineModule.times);
defineModule.loadLog.push("Loaded in " + (Date.now() - start) + "ms");
overlay.windows = array.uniq(overlay.windows.concat(window), true);
}
if (overlay.onWindowVisible)
overlay.onWindowVisible.push(finish);
else
finish();
modules.events.listen(window, "unload", function onUnload() {
window.removeEventListener("unload", onUnload.wrapped, false);
@@ -316,12 +303,21 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen
util.trapErrors("destroy", mod);
}
}, false);
},
visible: function visible(window) {
// Module.list.forEach(load);
this.frob("load");
this.modules.times = update({}, defineModule.times);
defineModule.loadLog.push("Loaded in " + (Date.now() - this.startTime) + "ms");
overlay.windows = array.uniq(overlay.windows.concat(window), true);
}
}));
},
cleanup: function cleanup() {
for (let { document: doc } in iter(services.windowMediator.getEnumerator(null))) {
for (let doc in util.iterDocuments()) {
for (let elem in values(doc.dactylOverlayElements || []))
if (elem.parentNode)
elem.parentNode.removeChild(elem);
@@ -348,10 +344,9 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen
"chrome-document-global-created": function (window, uri) { this.observe(window, "toplevel-window-ready", null); },
"content-document-global-created": function (window, uri) { this.observe(window, "toplevel-window-ready", null); },
"xul-window-visible": function () {
if (this.onWindowVisible) {
if (this.onWindowVisible)
this.onWindowVisible.forEach(function (f) f.call(this), this);
this.onWindowVisible = null;
}
this.onWindowVisible = null;
}
},
@@ -367,11 +362,14 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen
for (let doc in util.iterDocuments())
if (~["interactive", "complete"].indexOf(doc.readyState)) {
this.onWindowVisible = null;
this.observe(doc.defaultView, "xul-window-visible");
this._loadOverlays(doc.defaultView);
}
else
else {
if (!this.onWindowVisible)
this.onWindowVisible = [];
this.observe(doc.defaultView, "toplevel-window-ready");
}
}
},
@@ -394,7 +392,7 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen
doc.dactylOverlayAttributes = [];
}
function overlay(key, fn) {
function insert(key, fn) {
if (obj[key]) {
let iterator = Iterator(obj[key]);
if (!isObject(obj[key]))
@@ -423,21 +421,30 @@ var Overlay = Module("Overlay", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReferen
}
}
overlay("before", function (elem, dom) elem.parentNode.insertBefore(dom, elem));
overlay("after", function (elem, dom) elem.parentNode.insertBefore(dom, elem.nextSibling));
overlay("append", function (elem, dom) elem.appendChild(dom));
overlay("prepend", function (elem, dom) elem.insertBefore(dom, elem.firstChild));
insert("before", function (elem, dom) elem.parentNode.insertBefore(dom, elem));
insert("after", function (elem, dom) elem.parentNode.insertBefore(dom, elem.nextSibling));
insert("append", function (elem, dom) elem.appendChild(dom));
insert("prepend", function (elem, dom) elem.insertBefore(dom, elem.firstChild));
if (obj.init)
obj.init(window);
function load(event) {
obj.load(window, event);
if (obj.visible)
if (!event || !overlay.onWindowVisible || window != util.topWindow(window))
obj.visible(window);
else
overlay.onWindowVisible.push(function () { obj.visible(window) });
}
if (obj.load)
if (doc.readyState === "complete")
obj.load(window);
load();
else
doc.addEventListener("load", util.wrapCallback(function load(event) {
doc.addEventListener("load", util.wrapCallback(function onLoad(event) {
if (event.originalTarget === event.target) {
doc.removeEventListener("load", load.wrapper, true);
obj.load(window, event);
doc.removeEventListener("load", onLoad.wrapper, true);
load(event);
}
}), true);
},