From e461ca9b95519b6dfff1a0d157da3cca90dc38f1 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Wed, 1 Dec 2010 14:54:10 -0500 Subject: [PATCH] Dispatch via the PresShell less often. Closes issue #154. --- common/content/events.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/common/content/events.js b/common/content/events.js index a8f6243e..392bdb63 100644 --- a/common/content/events.js +++ b/common/content/events.js @@ -362,16 +362,13 @@ const Events = Module("events", { dispatch: Class.memoize(function () util.haveGecko("2b") ? function (target, event) { - if (target instanceof Window) - target = target.document; - if (target instanceof Document) - target = target.documentElement; - dactyl.assert(target); - - // This causes a crash on Gecko<2.0, it seems. - target.ownerDocument.defaultView - .QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils) - .dispatchDOMEventViaPresShell(target, event, true) + if (target instanceof Element) + // This causes a crash on Gecko<2.0, it seems. + (target.ownerDocument || target.document || target).defaultView + .QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils) + .dispatchDOMEventViaPresShell(target, event, true) + else + target.dispatchEvent(event); } : function (target, event) target.dispatchEvent(event)),