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

Work around stupid fucking crash on FF3.6. Closes issue \#127.

Update issue \#124
This is not fixed on Firefox <4.0, given that the correct fix causes
crashes.

--HG--
extra : rebase_source : 1cade319b1260cb1dc20330a338ce34104ffddff
This commit is contained in:
Kris Maglione
2010-11-08 07:18:11 -05:00
parent b21c2a093f
commit f004a80d55
4 changed files with 18 additions and 6 deletions

View File

@@ -645,7 +645,8 @@ const Buffer = Module("buffer", {
prefs.withContext(function () { prefs.withContext(function () {
prefs.set("browser.tabs.loadInBackground", true); prefs.set("browser.tabs.loadInBackground", true);
["mousedown", "mouseup"].forEach(function (event) { ["mousedown", "mouseup", "click"].slice(0, util.haveGecko("2.0") ? 2 : 3)
.forEach(function (event) {
events.dispatch(elem, events.create(doc, event, { events.dispatch(elem, events.create(doc, event, {
screenX: offsetX, screenY: offsetY, screenX: offsetX, screenY: offsetY,
ctrlKey: ctrlKey, shiftKey: shiftKey, metaKey: ctrlKey ctrlKey: ctrlKey, shiftKey: shiftKey, metaKey: ctrlKey

View File

@@ -364,11 +364,13 @@ const Events = Module("events", {
* @param {Node} target The DOM node to which to dispatch the event. * @param {Node} target The DOM node to which to dispatch the event.
* @param {Event} event The event to dispatch. * @param {Event} event The event to dispatch.
*/ */
dispatch: function (target, event) { dispatch: Class.memoize(function ()
return target.ownerDocument.defaultView util.haveGecko("2.0")
? function (target, event) // This causes a crash on Gecko<2.0, it seems.
target.ownerDocument.defaultView
.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils) .QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils)
.dispatchDOMEventViaPresShell(target, event, true); .dispatchDOMEventViaPresShell(target, event, true)
}, : function (target, event) target.dispatchEvent(event)),
/** /**
* Converts an event string into an array of pseudo-event objects. * Converts an event string into an array of pseudo-event objects.

View File

@@ -52,6 +52,7 @@ const Services = Module("Services", {
this.add("tagging", "@mozilla.org/browser/tagging-service;1", Ci.nsITaggingService); this.add("tagging", "@mozilla.org/browser/tagging-service;1", Ci.nsITaggingService);
this.add("threading", "@mozilla.org/thread-manager;1", Ci.nsIThreadManager); this.add("threading", "@mozilla.org/thread-manager;1", Ci.nsIThreadManager);
this.add("urifixup", "@mozilla.org/docshell/urifixup;1", Ci.nsIURIFixup); this.add("urifixup", "@mozilla.org/docshell/urifixup;1", Ci.nsIURIFixup);
this.add("versionCompare", "@mozilla.org/xpcom/version-comparator;1", Ci.nsIVersionComparator);
this.add("windowMediator", "@mozilla.org/appshell/window-mediator;1", Ci.nsIWindowMediator); this.add("windowMediator", "@mozilla.org/appshell/window-mediator;1", Ci.nsIWindowMediator);
this.add("windowWatcher", "@mozilla.org/embedcomp/window-watcher;1", Ci.nsIWindowWatcher); this.add("windowWatcher", "@mozilla.org/embedcomp/window-watcher;1", Ci.nsIWindowWatcher);

View File

@@ -466,6 +466,14 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference])
return null; return null;
}, },
/**
* Returns true if the current Gecko runtime is of the given version
* or greater.
*
* @param {string} ver The required version.
*/
haveGecko: function (ver) services.get("versionCompare").compare(services.get("runtime").platformVersion, ver) >= 0,
/** /**
* Sends a synchronous or asynchronous HTTP request to *url* and returns * Sends a synchronous or asynchronous HTTP request to *url* and returns
* the XMLHttpRequest object. If *callback* is specified the request is * the XMLHttpRequest object. If *callback* is specified the request is