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

Make things not explode.

This commit is contained in:
Kris Maglione
2012-01-15 15:50:14 -05:00
parent 16ca1f4983
commit 53d6587fc7
4 changed files with 34 additions and 7 deletions

View File

@@ -143,7 +143,7 @@ var Events = Module("events", {
this.active.push(elem); this.active.push(elem);
} }
this.active = this.active.filter(function (e) e.popupBoxObject.popupState != "closed"); this.active = this.active.filter(function (e) e.popupBoxObject && e.popupBoxObject.popupState != "closed");
if (!this.active.length && !this.activeMenubar) if (!this.active.length && !this.activeMenubar)
modes.remove(modes.MENU, true); modes.remove(modes.MENU, true);

View File

@@ -803,13 +803,32 @@ var DOM = Class("DOM", {
if (isObject(event)) if (isObject(event))
capture = listener; capture = listener;
else else
event = array.toObject([[key, val]]); event = array.toObject([[event, listener]]);
return this.each(function (elem) { return this.each(function (elem) {
for (let [k, v] in Iterator(event)) for (let [k, v] in Iterator(event))
elem.removeEventListener(k, v.wrapper || v, capture); elem.removeEventListener(k, v.wrapper || v, capture);
}); });
}, },
once: function once(event, listener, capture) {
if (isObject(event))
capture = listener;
else
event = array.toObject([[event, listener]]);
for (let pair in Iterator(event)) {
let [evt, callback] = pair;
event[evt] = util.wrapCallback(function wrapper(event) {
this.removeEventListener(evt, wrapper.wrapper, capture);
return callback.apply(this, arguments);
}, true);
}
return this.each(function (elem) {
for (let [k, v] in Iterator(event))
elem.addEventListener(k, v, capture);
});
},
dispatch: function dispatch(event, params, extraProps) { dispatch: function dispatch(event, params, extraProps) {
this.canceled = false; this.canceled = false;

View File

@@ -55,7 +55,7 @@ var JavaScript = Module("javascript", {
newContext: function () this.modules.newContext(this.modules.userContext, true), newContext: function () this.modules.newContext(this.modules.userContext, true),
get completers() JavaScript.completers, // For backward compatibility completers: Class.Memoize(function () Object.create(JavaScript.completers)),
// Some object members are only accessible as function calls // Some object members are only accessible as function calls
getKey: function (obj, key) { getKey: function (obj, key) {
@@ -550,7 +550,7 @@ var JavaScript = Module("javascript", {
} }
catch (e) {} catch (e) {}
if (!completer) if (!completer)
completer = JavaScript.completers[funcName]; completer = this.completers[funcName];
if (!completer) if (!completer)
return null; return null;

View File

@@ -710,6 +710,8 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
* responseType: {string} Override the type of the "response" * responseType: {string} Override the type of the "response"
* property. * property.
* *
* headers: {objects} Extra request headers.
*
* user: {string} The user name to send via HTTP Authentication. * user: {string} The user name to send via HTTP Authentication.
* pass: {string} The password to send via HTTP Authentication. * pass: {string} The password to send via HTTP Authentication.
* *
@@ -749,12 +751,18 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
params.data = data; params.data = data;
} }
if (params.mimeType) if (params.mimeType)
xmlhttp.overrideMimeType(params.mimeType); xmlhttp.overrideMimeType(params.mimeType);
xmlhttp.open(params.method || "GET", url, async, let args = [params.method || "GET", url, async];
params.user, params.pass); if (params.user != null || params.pass != null)
args.push(params.user);
if (params.pass != null)
args.push(prams.pass);
xmlhttp.open.apply(xmlhttp, args);
for (let [header, val] in Iterator(params.headers || {}))
xmlhttp.setRequestHeader(header, val);
if (params.responseType) if (params.responseType)
xmlhttp.responseType = params.responseType; xmlhttp.responseType = params.responseType;