diff options
| -rw-r--r-- | ext/bg/js/options.js | 1 | ||||
| -rw-r--r-- | ext/bg/js/settings.js | 2 | ||||
| -rw-r--r-- | ext/bg/settings.html | 4 | ||||
| -rw-r--r-- | ext/fg/js/frontend.js | 21 | ||||
| -rw-r--r-- | ext/fg/js/source.js | 4 | 
5 files changed, 19 insertions, 13 deletions
| diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js index dcad97d4..a245da80 100644 --- a/ext/bg/js/options.js +++ b/ext/bg/js/options.js @@ -146,6 +146,7 @@ function optionsSetDefaults(options) {              middleMouse: true,              selectText: true,              alphanumeric: true, +            autoHideResults: false,              delay: 15,              length: 10,              modifier: 'shift' diff --git a/ext/bg/js/settings.js b/ext/bg/js/settings.js index a2580c35..d73d7509 100644 --- a/ext/bg/js/settings.js +++ b/ext/bg/js/settings.js @@ -35,6 +35,7 @@ async function formRead() {      optionsNew.scanning.middleMouse = $('#middle-mouse-button-scan').prop('checked');      optionsNew.scanning.selectText = $('#select-matched-text').prop('checked');      optionsNew.scanning.alphanumeric = $('#search-alphanumeric').prop('checked'); +    optionsNew.scanning.autoHideResults = $('#auto-hide-results').prop('checked');      optionsNew.scanning.delay = parseInt($('#scan-delay').val(), 10);      optionsNew.scanning.length = parseInt($('#scan-length').val(), 10);      optionsNew.scanning.modifier = $('#scan-modifier-key').val(); @@ -136,6 +137,7 @@ async function onReady() {      $('#middle-mouse-button-scan').prop('checked', options.scanning.middleMouse);      $('#select-matched-text').prop('checked', options.scanning.selectText);      $('#search-alphanumeric').prop('checked', options.scanning.alphanumeric); +    $('#auto-hide-results').prop('checked', options.scanning.autoHideResults);      $('#scan-delay').val(options.scanning.delay);      $('#scan-length').val(options.scanning.length);      $('#scan-modifier-key').val(options.scanning.modifier); diff --git a/ext/bg/settings.html b/ext/bg/settings.html index 0a5c205c..c2612967 100644 --- a/ext/bg/settings.html +++ b/ext/bg/settings.html @@ -96,6 +96,10 @@                      <label><input type="checkbox" id="search-alphanumeric"> Search alphanumeric text</label>                  </div> +                <div class="checkbox"> +                    <label><input type="checkbox" id="auto-hide-results"> Automatically hide results</label> +                </div> +                  <div class="form-group options-advanced">                      <label for="scan-delay">Scan delay (in milliseconds)</label>                      <input type="number" min="1" id="scan-delay" class="form-control"> diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index 41c93f00..e4035289 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -169,27 +169,21 @@ class Frontend {      }      async searchAt(point) { -        let textSource = null; +        const textSource = docRangeFromPoint(point); +        let hideResults = false;          try {              if (this.pendingLookup) {                  return;              } -            textSource = docRangeFromPoint(point); -            if (!textSource || !textSource.containsPoint(point)) { -                docImposterDestroy(); -                return; -            } -              if (this.textSourceLast && this.textSourceLast.equals(textSource)) {                  return;              } -            this.pendingLookup = true; - -            if (!await this.searchTerms(textSource)) { -                await this.searchKanji(textSource); +            if (textSource && textSource.containsPoint(point)) { +                this.pendingLookup = true; +                hideResults = !await this.searchTerms(textSource) && !await this.searchKanji(textSource);              }          } catch (e) {              if (window.yomichan_orphaned) { @@ -201,6 +195,11 @@ class Frontend {              }          } finally {              docImposterDestroy(); + +            if (hideResults && this.options.scanning.autoHideResults) { +                this.popup.hide(); +            } +              this.pendingLookup = false;          }      } diff --git a/ext/fg/js/source.js b/ext/fg/js/source.js index 3b6ecb2a..664dbec7 100644 --- a/ext/fg/js/source.js +++ b/ext/fg/js/source.js @@ -82,7 +82,7 @@ class TextSourceRange {      }      equals(other) { -        return other.range && other.range.compareBoundaryPoints(Range.START_TO_START, this.range) === 0; +        return other && other.range && other.range.compareBoundaryPoints(Range.START_TO_START, this.range) === 0;      }      static shouldEnter(node) { @@ -239,6 +239,6 @@ class TextSourceElement {      }      equals(other) { -        return other.element === this.element && other.content === this.content; +        return other && other.element === this.element && other.content === this.content;      }  } |