diff --git a/common/content/buffer.js b/common/content/buffer.js index 54ff0ac2..456062e8 100644 --- a/common/content/buffer.js +++ b/common/content/buffer.js @@ -251,12 +251,9 @@ const Buffer = Module("buffer", { buffer._triggerLoadAutocmd("PageLoadPre", webProgress.DOMWindow.document); - // don't reset mode if a frame of the frameset gets reloaded which - // is not the focused frame - if (document.commandDispatcher.focusedWindow == webProgress.DOMWindow && this.loadCount++) { + if (document.commandDispatcher.focusedWindow == webProgress.DOMWindow && this.loadCount++) util.timeout(function () { modes.reset(false); }, - dactyl.mode == modes.HINTS ? 500 : 0); - } + dactyl.mode == modes.HINTS ? 500 : 0); } else if (flags & Ci.nsIWebProgressListener.STATE_STOP) { // Workaround for bugs 591425 and 606877, dactyl bug #81 diff --git a/common/content/dactyl.js b/common/content/dactyl.js index dbebe862..51c8617e 100644 --- a/common/content/dactyl.js +++ b/common/content/dactyl.js @@ -370,13 +370,14 @@ const Dactyl = Module("dactyl", { return res; }, - focus: function (elem, flags) { + focus: function focus(elem, flags) { flags = flags || services.focus.FLAG_BYMOUSE; + util.dumpStack(); try { if (elem instanceof Document) elem = elem.defaultView; if (elem instanceof Window) - services.focus.clearFocus(elem); + services.focus.focusedWindow = elem; else services.focus.setFocus(elem, flags); } catch (e) { @@ -391,7 +392,7 @@ const Dactyl = Module("dactyl", { * @param {boolean} clearFocusedElement Remove focus from any focused * element. */ - focusContent: function (clearFocusedElement) { + focusContent: function focusContent(clearFocusedElement) { if (window != services.windowWatcher.activeWindow) return; @@ -414,7 +415,8 @@ const Dactyl = Module("dactyl", { catch (e) {} if (clearFocusedElement) { - services.focus.clearFocus(window); + if (dactyl.focusedElement) + dactyl.focusedElement.blur(); if (win && Editor.getEditor(win)) { win.blur(); if (win.frameElement) @@ -431,6 +433,7 @@ const Dactyl = Module("dactyl", { /** @property {Element} The currently focused element. */ get focusedElement() services.focus.getFocusedElementForWindow(window, true, {}), + set focusedElement(elem) dactyl.focus(elem), /** * Returns whether this Dactyl extension supports *feature*. diff --git a/common/content/modes.js b/common/content/modes.js index c59e85b6..715d4b0e 100644 --- a/common/content/modes.js +++ b/common/content/modes.js @@ -286,6 +286,7 @@ const Modes = Module("modes", { }, push: function push(mainMode, extendedMode, params) { + util.dumpStack(); this.set(mainMode, extendedMode, params, { push: this.topOfStack }); },