diff --git a/common/content/buffer.js b/common/content/buffer.js index b136f18e..99b06b1b 100644 --- a/common/content/buffer.js +++ b/common/content/buffer.js @@ -474,11 +474,11 @@ var Buffer = Module("buffer", { * @property {Window} Returns the currently focused frame. */ get focusedFrame() { - let frame = (dactyl.has("tabs") ? tabs.localStore : this.localStore).focusedFrame; + let frame = this.localStore.focusedFrame; return frame && frame.get() || content; }, set focusedFrame(frame) { - (dactyl.has("tabs") ? tabs.localStore : this.localStore).focusedFrame = Cu.getWeakReference(frame); + this.localStore.focusedFrame = Cu.getWeakReference(frame); }, /** diff --git a/common/content/dactyl.js b/common/content/dactyl.js index 6918964a..141c30e7 100644 --- a/common/content/dactyl.js +++ b/common/content/dactyl.js @@ -29,7 +29,7 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), { this.commands = {}; this.indices = {}; this.modules = modules; - this.observers = {}; + this._observers = {}; util.addObserver(this); this.commands["dactyl.help"] = function (event) { @@ -133,21 +133,21 @@ var Dactyl = Module("dactyl", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), { }, registerObserver: function (type, callback, weak) { - if (!(type in this.observers)) - this.observers[type] = []; - this.observers[type].push(weak ? Cu.getWeakReference(callback) : { get: function () callback }); + if (!(type in this._observers)) + this._observers[type] = []; + this._observers[type].push(weak ? Cu.getWeakReference(callback) : { get: function () callback }); }, unregisterObserver: function (type, callback) { - if (type in this.observers) - this.observers[type] = this.observers[type].filter(function (c) c.get() != callback); + if (type in this._observers) + this._observers[type] = this._observers[type].filter(function (c) c.get() != callback); }, // TODO: "zoom": if the zoom value of the current buffer changed triggerObserver: function (type) { let args = Array.slice(arguments, 1); - if (type in this.observers) - this.observers[type] = this.observers[type].filter(function (callback) { + if (type in this._observers) + this._observers[type] = this._observers[type].filter(function (callback) { if (callback.get()) { callback.get().apply(null, args); return true; diff --git a/common/modules/finder.jsm b/common/modules/finder.jsm index 94d607d0..b7040770 100644 --- a/common/modules/finder.jsm +++ b/common/modules/finder.jsm @@ -318,7 +318,7 @@ var RangeFind = Class("RangeFind", { get selectedRange() { let win = this.content, store = this.content.document.dactylStore;; if (store) - win = store.focusedFrame || win; + win = store.focusedFrame && store.focusedFrame.get() || win; let selection = win.getSelection(); return (selection.rangeCount ? selection.getRangeAt(0) : this.ranges[0].range).cloneRange(); @@ -328,6 +328,8 @@ var RangeFind = Class("RangeFind", { this.range.selection.addRange(range); this.range.selectionController.scrollSelectionIntoView( this.range.selectionController.SELECTION_NORMAL, 0, false); + + services.focus.focusedWindow = range.startContainer.ownerDocument.defaultView; }, cancel: function () {