diff options
author | Alex Yatskov <alex@foosoft.net> | 2017-09-24 11:01:40 -0700 |
---|---|---|
committer | Alex Yatskov <alex@foosoft.net> | 2017-09-24 11:01:40 -0700 |
commit | 00c20aed4253da6506194d90a6102920d3235ced (patch) | |
tree | cfb2fd51a441241cb333a208b3ce3130add93953 /ext/fg/js/frontend.js | |
parent | 3a1aad07d61411f634e86f905babd6fbbac2eae1 (diff) | |
parent | 29812c1b036d3eae9b5b222219f556aec712c3e8 (diff) |
Merge branch 'master' into firefox-amo
Diffstat (limited to 'ext/fg/js/frontend.js')
-rw-r--r-- | ext/fg/js/frontend.js | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 41c93f00..3a90b3ad 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -80,7 +80,6 @@ class Frontend { const search = async () => { try { await this.searchAt({x: e.clientX, y: e.clientY}); - this.pendingLookup = false; } catch (e) { this.onError(e); } @@ -153,7 +152,7 @@ class Frontend { } onError(error) { - window.alert(`Error: ${error}`); + window.alert(`Error: ${error.toString ? error.toString() : error}`); } popupTimerSet(callback) { @@ -169,27 +168,17 @@ class Frontend { } async searchAt(point) { - let textSource = null; - - try { - if (this.pendingLookup) { - return; - } - - textSource = docRangeFromPoint(point); - if (!textSource || !textSource.containsPoint(point)) { - docImposterDestroy(); - return; - } - - if (this.textSourceLast && this.textSourceLast.equals(textSource)) { - return; - } + if (this.pendingLookup || this.popup.containsPoint(point)) { + return; + } - this.pendingLookup = true; + const textSource = docRangeFromPoint(point); + let hideResults = !textSource || !textSource.containsPoint(point); - if (!await this.searchTerms(textSource)) { - await this.searchKanji(textSource); + try { + if (!hideResults && (!this.textSourceLast || !this.textSourceLast.equals(textSource))) { + this.pendingLookup = true; + hideResults = !await this.searchTerms(textSource) && !await this.searchKanji(textSource); } } catch (e) { if (window.yomichan_orphaned) { @@ -200,7 +189,12 @@ class Frontend { this.onError(e); } } finally { - docImposterDestroy(); + if (hideResults && this.options.scanning.autoHideResults) { + this.searchClear(); + } else { + docImposterDestroy(); + } + this.pendingLookup = false; } } |