aboutsummaryrefslogtreecommitdiff
path: root/ext/js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/js')
-rw-r--r--ext/js/data/options-util.js19
-rw-r--r--ext/js/display/display.js1
-rw-r--r--ext/js/language/text-scanner.js13
-rw-r--r--ext/js/pages/settings/scan-inputs-controller.js5
4 files changed, 31 insertions, 7 deletions
diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js
index af81f29e..4e468aea 100644
--- a/ext/js/data/options-util.js
+++ b/ext/js/data/options-util.js
@@ -535,7 +535,8 @@ export class OptionsUtil {
this._updateVersion26,
this._updateVersion27,
this._updateVersion28,
- this._updateVersion29
+ this._updateVersion29,
+ this._updateVersion30
];
/* eslint-enable @typescript-eslint/unbound-method */
if (typeof targetVersion === 'number' && targetVersion < result.length) {
@@ -605,7 +606,7 @@ export class OptionsUtil {
showAdvanced: false,
searchTerms: true,
searchKanji: true,
- scanOnTouchMove: true,
+ scanOnTouchMove: false,
scanOnPenHover: true,
scanOnPenPress: true,
scanOnPenRelease: false,
@@ -1217,6 +1218,20 @@ export class OptionsUtil {
await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v29.handlebars');
}
+ /**
+ * - Added scanning.inputs[].options.scanOnTouchTap.
+ * - Set touch settings to be more sensible.
+ * @type {import('options-util').UpdateFunction}
+ */
+ async _updateVersion30(options) {
+ for (const profile of options.profiles) {
+ for (const input of profile.options.scanning.inputs) {
+ input.options.scanOnTouchTap = true;
+ input.options.scanOnTouchPress = false;
+ input.options.scanOnTouchRelease = false;
+ }
+ }
+ }
/**
* @param {string} url
diff --git a/ext/js/display/display.js b/ext/js/display/display.js
index 80f5e9ae..10c1545c 100644
--- a/ext/js/display/display.js
+++ b/ext/js/display/display.js
@@ -1844,6 +1844,7 @@ export class Display extends EventDispatcher {
options: {
searchTerms: true,
searchKanji: true,
+ scanOnTouchTap: true,
scanOnTouchMove: false,
scanOnTouchPress: false,
scanOnTouchRelease: false,
diff --git a/ext/js/language/text-scanner.js b/ext/js/language/text-scanner.js
index ad5ba12b..bdbc117e 100644
--- a/ext/js/language/text-scanner.js
+++ b/ext/js/language/text-scanner.js
@@ -137,6 +137,8 @@ export class TextScanner extends EventDispatcher {
/** @type {() => void} */
this._preventNextClickScanTimerCallback = this._onPreventNextClickScanTimeout.bind(this);
+ /** @type {boolean} */
+ this._touchTapValid = false;
/** @type {?number} */
this._primaryTouchIdentifier = null;
/** @type {boolean} */
@@ -662,6 +664,7 @@ export class TextScanner extends EventDispatcher {
this._preventNextContextMenu = false;
this._preventNextMouseDown = false;
this._preventNextClick = false;
+ this._touchTapValid = true;
const selection = window.getSelection();
if (selection !== null && isPointInSelection(x, y, selection)) {
@@ -707,9 +710,10 @@ export class TextScanner extends EventDispatcher {
if (!allowSearch) { return; }
const inputInfo = this._getMatchingInputGroupFromEvent('touch', 'touchEnd', e);
- if (inputInfo === null || !(inputInfo.input !== null && inputInfo.input.scanOnTouchRelease)) { return; }
-
- void this._searchAtFromTouchEnd(x, y, inputInfo);
+ if (inputInfo === null || inputInfo.input === null) { return; }
+ if (inputInfo.input.scanOnTouchRelease || (inputInfo.input.scanOnTouchTap && this._touchTapValid)) {
+ void this._searchAtFromTouchEnd(x, y, inputInfo);
+ }
}
/**
@@ -728,6 +732,8 @@ export class TextScanner extends EventDispatcher {
* @param {TouchEvent} e
*/
_onTouchMove(e) {
+ this._touchTapValid = false;
+
if (this._primaryTouchIdentifier === null) { return; }
if (!e.cancelable) {
@@ -1477,6 +1483,7 @@ export class TextScanner extends EventDispatcher {
scanOnTouchMove: this._getInputBoolean(options.scanOnTouchMove),
scanOnTouchPress: this._getInputBoolean(options.scanOnTouchPress),
scanOnTouchRelease: this._getInputBoolean(options.scanOnTouchRelease),
+ scanOnTouchTap: this._getInputBoolean(options.scanOnTouchTap),
scanOnPenMove: this._getInputBoolean(options.scanOnPenMove),
scanOnPenHover: this._getInputBoolean(options.scanOnPenHover),
scanOnPenReleaseHover: this._getInputBoolean(options.scanOnPenReleaseHover),
diff --git a/ext/js/pages/settings/scan-inputs-controller.js b/ext/js/pages/settings/scan-inputs-controller.js
index fcaad589..839a6896 100644
--- a/ext/js/pages/settings/scan-inputs-controller.js
+++ b/ext/js/pages/settings/scan-inputs-controller.js
@@ -208,8 +208,9 @@ export class ScanInputsController {
showAdvanced: false,
searchTerms: true,
searchKanji: true,
- scanOnTouchMove: true,
- scanOnTouchPress: true,
+ scanOnTouchTap: true,
+ scanOnTouchMove: false,
+ scanOnTouchPress: false,
scanOnTouchRelease: false,
scanOnPenMove: true,
scanOnPenHover: true,