aboutsummaryrefslogtreecommitdiff
path: root/ext/fg/js/frontend.js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-04-27 18:10:37 -0400
committerGitHub <noreply@github.com>2020-04-27 18:10:37 -0400
commit48c7010f4ea8daafd30e5650625c377affa0cecd (patch)
tree2b652062128c31eda340a0ac84e102c2106136b5 /ext/fg/js/frontend.js
parent887d769786f2909dbd74e3465cef3551b780a49b (diff)
Frontend refactor (part 1) (#484)
* Remove _getVisualViewportScale * Use super's mouse event listener definitions * Remove redundant override * Remove getTouchEventListeners override * Rename Display.onSearchClear to onEscape * Change onSearchClear to clearSelection and use an event * Update how text is marked for selection and deselection * Replace onError with yomichan.logError * Update setEnabled to refresh all event listeners
Diffstat (limited to 'ext/fg/js/frontend.js')
-rw-r--r--ext/fg/js/frontend.js26
1 files changed, 12 insertions, 14 deletions
diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js
index 46921d36..50f52724 100644
--- a/ext/fg/js/frontend.js
+++ b/ext/fg/js/frontend.js
@@ -49,7 +49,7 @@ class Frontend extends TextScanner {
this._lastShowPromise = Promise.resolve();
this._windowMessageHandlers = new Map([
- ['popupClose', () => this.onSearchClear(true)],
+ ['popupClose', () => this.clearSelection(false)],
['selectionCopy', () => document.execCommand('copy')]
]);
@@ -79,10 +79,12 @@ class Frontend extends TextScanner {
yomichan.on('zoomChanged', this.onZoomChanged.bind(this));
chrome.runtime.onMessage.addListener(this.onRuntimeMessage.bind(this));
+ this.on('clearSelection', this.onClearSelection.bind(this));
+
this._updateContentScale();
this._broadcastRootPopupInformation();
} catch (e) {
- this.onError(e);
+ yomichan.logError(e);
}
}
@@ -140,7 +142,7 @@ class Frontend extends TextScanner {
}
async setPopup(popup) {
- this.onSearchClear(false);
+ this.clearSelection(true);
this.popup = popup;
await popup.setOptionsContext(await this.getOptionsContext(), this._id);
}
@@ -186,11 +188,11 @@ class Frontend extends TextScanner {
this._showPopupContent(textSource, await this.getOptionsContext(), 'orphaned');
}
} else {
- this.onError(e);
+ yomichan.logError(e);
}
} finally {
if (results === null && this.options.scanning.autoHideResults) {
- this.onSearchClear(true);
+ this.clearSelection(false);
}
}
@@ -238,10 +240,9 @@ class Frontend extends TextScanner {
return {definitions, type: 'kanji'};
}
- onSearchClear(changeFocus) {
- this.popup.hide(changeFocus);
+ onClearSelection({passive}) {
+ this.popup.hide(!passive);
this.popup.clearAutoPlayTimer();
- super.onSearchClear(changeFocus);
}
async getOptionsContext() {
@@ -269,7 +270,9 @@ class Frontend extends TextScanner {
contentScale /= this._pageZoomFactor;
}
if (popupScaleRelativeToVisualViewport) {
- contentScale /= Frontend._getVisualViewportScale();
+ const visualViewport = window.visualViewport;
+ const visualViewportScale = (visualViewport !== null && typeof visualViewport === 'object' ? visualViewport.scale : 1.0);
+ contentScale /= visualViewportScale;
}
if (contentScale === this._contentScale) { return; }
@@ -302,9 +305,4 @@ class Frontend extends TextScanner {
this._showPopupContent(textSource, await this.getOptionsContext());
}
}
-
- static _getVisualViewportScale() {
- const visualViewport = window.visualViewport;
- return visualViewport !== null && typeof visualViewport === 'object' ? visualViewport.scale : 1.0;
- }
}