diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/mixed/js/text-scanner.js | 31 | 
1 files changed, 21 insertions, 10 deletions
| diff --git a/ext/mixed/js/text-scanner.js b/ext/mixed/js/text-scanner.js index dedd29b7..cff53b47 100644 --- a/ext/mixed/js/text-scanner.js +++ b/ext/mixed/js/text-scanner.js @@ -277,7 +277,7 @@ class TextScanner extends EventDispatcher {      _onClick(e) {          if (this._searchOnClick) { -            this._searchAt(e.clientX, e.clientY, {cause: 'click', index: -1, empty: false}); +            this._searchAt(e.clientX, e.clientY, {type: 'mouse', cause: 'click', index: -1, empty: false});          }          if (this._preventNextClick) { @@ -306,19 +306,23 @@ class TextScanner extends EventDispatcher {              return;          } +        const {clientX, clientY, identifier} = e.changedTouches[0]; +        this._onPrimaryTouchStart(e, clientX, clientY, identifier); +    } + +    _onPrimaryTouchStart(e, x, y, identifier) {          this._preventScroll = false;          this._preventNextContextMenu = false;          this._preventNextMouseDown = false;          this._preventNextClick = false; -        const primaryTouch = e.changedTouches[0]; -        if (DocumentUtil.isPointInSelection(primaryTouch.clientX, primaryTouch.clientY, window.getSelection())) { +        if (DocumentUtil.isPointInSelection(x, y, window.getSelection())) {              return;          } -        this._primaryTouchIdentifier = primaryTouch.identifier; +        this._primaryTouchIdentifier = identifier; -        this._searchAtFromTouchStart(e, primaryTouch.clientX, primaryTouch.clientY); +        this._searchAtFromTouchStart(e, x, y);      }      _onTouchEnd(e) { @@ -329,6 +333,10 @@ class TextScanner extends EventDispatcher {              return;          } +        this._onPrimaryTouchEnd(); +    } + +    _onPrimaryTouchEnd() {          this._primaryTouchIdentifier = null;          this._preventScroll = false;          this._preventNextClick = false; @@ -350,11 +358,12 @@ class TextScanner extends EventDispatcher {              return;          } -        const inputInfo = this._getMatchingInputGroupFromEvent(e, 'touch'); +        const type = 'touch'; +        const inputInfo = this._getMatchingInputGroupFromEvent(e, type);          if (inputInfo === null) { return; }          const {index, empty} = inputInfo; -        this._searchAt(primaryTouch.clientX, primaryTouch.clientY, {cause: 'touchMove', index, empty}); +        this._searchAt(primaryTouch.clientX, primaryTouch.clientY, {type, cause: 'touchMove', index, empty});          e.preventDefault(); // Disable scroll      } @@ -502,19 +511,21 @@ class TextScanner extends EventDispatcher {              }          } -        await this._searchAt(x, y, {cause: 'mouse', index: inputIndex, empty: inputEmpty}); +        await this._searchAt(x, y, {type: 'mouse', cause: 'mouse', index: inputIndex, empty: inputEmpty});      }      async _searchAtFromTouchStart(e, x, y) {          if (this._pendingLookup) { return; } -        const inputInfo = this._getMatchingInputGroupFromEvent(e, 'touch'); +        const type = 'touch'; +        const cause = 'touchStart'; +        const inputInfo = this._getMatchingInputGroupFromEvent(e, type);          if (inputInfo === null) { return; }          const {index, empty} = inputInfo;          const textSourceCurrentPrevious = this._textSourceCurrent !== null ? this._textSourceCurrent.clone() : null; -        await this._searchAt(x, y, {cause: 'touchStart', index, empty}); +        await this._searchAt(x, y, {type, cause, index, empty});          if (              this._textSourceCurrent !== null && |