From 194615ef21557236cd2b9ea390b4164a4d5338c5 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sat, 12 Oct 2019 14:34:45 -0400 Subject: [PATCH] Make popups store options --- ext/fg/js/frontend.js | 1 + ext/fg/js/popup-proxy-host.js | 6 ++++++ ext/fg/js/popup-proxy.js | 5 +++++ ext/fg/js/popup.js | 5 +++++ 4 files changed, 17 insertions(+) diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 1c41cad1..f67441af 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -287,6 +287,7 @@ class Frontend { async updateOptions() { this.options = await apiOptionsGet(this.getOptionsContext()); this.setEnabled(this.options.general.enable); + await this.popup.setOptions(this.options); } popupTimerSet(callback) { diff --git a/ext/fg/js/popup-proxy-host.js b/ext/fg/js/popup-proxy-host.js index f933639c..5edee8dd 100644 --- a/ext/fg/js/popup-proxy-host.js +++ b/ext/fg/js/popup-proxy-host.js @@ -38,6 +38,7 @@ class PopupProxyHost { this.apiReceiver = new FrontendApiReceiver(`popup-proxy-host#${frameId}`, { createNestedPopup: ({parentId}) => this.createNestedPopup(parentId), + setOptions: ({id, options}) => this.setOptions(id, options), show: ({id, elementRect, options}) => this.show(id, elementRect, options), showOrphaned: ({id, elementRect, options}) => this.show(id, elementRect, options), hide: ({id, changeFocus}) => this.hide(id, changeFocus), @@ -86,6 +87,11 @@ class PopupProxyHost { return new DOMRect(x, y, jsonRect.width, jsonRect.height); } + async setOptions(id, options) { + const popup = this.getPopup(id); + return await popup.setOptions(options); + } + async show(id, elementRect, options) { const popup = this.getPopup(id); elementRect = this.jsonRectToDOMRect(popup, elementRect); diff --git a/ext/fg/js/popup-proxy.js b/ext/fg/js/popup-proxy.js index efbd28b2..22b95785 100644 --- a/ext/fg/js/popup-proxy.js +++ b/ext/fg/js/popup-proxy.js @@ -46,6 +46,11 @@ class PopupProxy { return id; } + async setOptions(options) { + const id = await this.getPopupId(); + return await this.invokeHostApi('setOptions', {id, options}); + } + async show(elementRect, options) { const id = await this.getPopupId(); elementRect = PopupProxy.DOMRectToJson(elementRect); diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index 0fd6a9d0..396a5be9 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -37,6 +37,7 @@ class Popup { this.isInjected = false; this.visible = false; this.visibleOverride = null; + this.options = null; this.updateVisibility(); } @@ -78,6 +79,10 @@ class Popup { }); } + async setOptions(options) { + this.options = options; + } + async show(elementRect, writingMode, options) { await this.inject(options);