mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-20 07:57:59 +01:00
Fix finder with iframes. Fix dactyl cleanup on :rehash.
This commit is contained in:
@@ -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);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 () {
|
||||
|
||||
Reference in New Issue
Block a user