diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js index 8526c9c1..7f673bd5 100644 --- a/ext/fg/js/float.js +++ b/ext/fg/js/float.js @@ -25,7 +25,6 @@ class DisplayFloat extends Display { constructor() { super(document.querySelector('#spinner'), document.querySelector('#definitions')); this._nestedPopupsPrepared = false; - this._ownerFrameId = null; this._frameEndpoint = new FrameEndpoint(); this._windowMessageHandlers = new Map([ ['extensionUnloaded', {async: false, handler: this._onMessageExtensionUnloaded.bind(this)}] @@ -59,7 +58,7 @@ class DisplayFloat extends Display { } onEscape() { - this._invoke('closePopup'); + this._invokeOwner('closePopup'); } async setOptionsContext(optionsContext) { @@ -99,7 +98,7 @@ class DisplayFloat extends Display { } async _onMessageConfigure({frameId, ownerFrameId, popupId, optionsContext, childrenSupported, scale}) { - this._ownerFrameId = ownerFrameId; + this.ownerFrameId = ownerFrameId; this.setOptionsContext(optionsContext); await this.updateOptions(); @@ -158,7 +157,7 @@ class DisplayFloat extends Display { _copySelection() { if (window.getSelection().toString()) { return false; } - this._invoke('copySelection'); + this._invokeOwner('copySelection'); return true; } @@ -197,7 +196,7 @@ class DisplayFloat extends Display { await onOptionsUpdated(); } - _invoke(action, params={}) { - return api.crossFrame.invoke(this._ownerFrameId, action, params); + _invokeOwner(action, params={}) { + return api.crossFrame.invoke(this.ownerFrameId, action, params); } } diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 3f8a43ab..c3498e85 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -82,6 +82,7 @@ class Display extends EventDispatcher { documentUtil: this._documentUtil }); this._mode = null; + this._ownerFrameId = null; this.registerActions([ ['close', () => { this.onEscape(); }], @@ -147,6 +148,14 @@ class Display extends EventDispatcher { return this._mode; } + get ownerFrameId() { + return this._ownerFrameId; + } + + set ownerFrameId(value) { + this._ownerFrameId = value; + } + async prepare() { this._updateMode(); this._setInteractive(true);