aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/mixed/js/text-scanner.js31
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 &&