diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-04-27 18:10:37 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-27 18:10:37 -0400 | 
| commit | 48c7010f4ea8daafd30e5650625c377affa0cecd (patch) | |
| tree | 2b652062128c31eda340a0ac84e102c2106136b5 /ext/mixed/js | |
| parent | 887d769786f2909dbd74e3465cef3551b780a49b (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/mixed/js')
| -rw-r--r-- | ext/mixed/js/display.js | 4 | ||||
| -rw-r--r-- | ext/mixed/js/text-scanner.js | 46 | 
2 files changed, 24 insertions, 26 deletions
| diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 70b7fcd3..32081c70 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -69,7 +69,7 @@ class Display {          this._onKeyDownHandlers = new Map([              ['Escape', () => { -                this.onSearchClear(); +                this.onEscape();                  return true;              }],              ['PageUp', (e) => { @@ -183,7 +183,7 @@ class Display {          throw new Error('Override me');      } -    onSearchClear() { +    onEscape() {          throw new Error('Override me');      } diff --git a/ext/mixed/js/text-scanner.js b/ext/mixed/js/text-scanner.js index 1c32714b..c582ccd8 100644 --- a/ext/mixed/js/text-scanner.js +++ b/ext/mixed/js/text-scanner.js @@ -21,8 +21,9 @@   * docRangeFromPoint   */ -class TextScanner { +class TextScanner extends EventDispatcher {      constructor(node, ignoreElements, ignorePoints) { +        super();          this.node = node;          this.ignoreElements = ignoreElements;          this.ignorePoints = ignorePoints; @@ -32,6 +33,7 @@ class TextScanner {          this.scanTimerPromise = null;          this.causeCurrent = null;          this.textSourceCurrent = null; +        this.textSourceCurrentSelected = false;          this.pendingLookup = false;          this.options = null; @@ -92,7 +94,7 @@ class TextScanner {          if (DOM.isMouseButtonDown(e, 'primary')) {              this.scanTimerClear(); -            this.onSearchClear(true); +            this.clearSelection(false);          }      } @@ -200,10 +202,6 @@ class TextScanner {          throw new Error('Override me');      } -    onError(error) { -        yomichan.logError(error); -    } -      async scanTimerWait() {          const delay = this.options.scanning.delay;          const promise = promiseTimeout(delay, true); @@ -225,17 +223,12 @@ class TextScanner {      }      setEnabled(enabled, canEnable) { -        if (enabled && canEnable) { -            if (!this.enabled) { -                this.hookEvents(); -                this.enabled = true; -            } +        this.eventListeners.removeAllEventListeners(); +        this.enabled = enabled && canEnable; +        if (this.enabled) { +            this.hookEvents();          } else { -            if (this.enabled) { -                this.eventListeners.removeAllEventListeners(); -                this.enabled = false; -            } -            this.onSearchClear(false); +            this.clearSelection(true);          }      } @@ -300,10 +293,7 @@ class TextScanner {                  const result = await this.onSearchSource(textSource, cause);                  if (result !== null) {                      this.causeCurrent = cause; -                    this.textSourceCurrent = textSource; -                    if (this.options.scanning.selectText) { -                        textSource.select(); -                    } +                    this.setCurrentTextSource(textSource);                  }                  this.pendingLookup = false;              } finally { @@ -312,7 +302,7 @@ class TextScanner {                  }              }          } catch (e) { -            this.onError(e); +            yomichan.logError(e);          }      } @@ -333,13 +323,15 @@ class TextScanner {          }      } -    onSearchClear(_) { +    clearSelection(passive) {          if (this.textSourceCurrent !== null) { -            if (this.options.scanning.selectText) { +            if (this.textSourceCurrentSelected) {                  this.textSourceCurrent.deselect();              }              this.textSourceCurrent = null; +            this.textSourceCurrentSelected = false;          } +        this.trigger('clearSelection', {passive});      }      getCurrentTextSource() { @@ -347,7 +339,13 @@ class TextScanner {      }      setCurrentTextSource(textSource) { -        return this.textSourceCurrent = textSource; +        this.textSourceCurrent = textSource; +        if (this.options.scanning.selectText) { +            this.textSourceCurrent.select(); +            this.textSourceCurrentSelected = true; +        } else { +            this.textSourceCurrentSelected = false; +        }      }      static isScanningModifierPressed(scanningModifier, mouseEvent) { |