Add scan on touch move and prevent touch scroll options (#871)
* Add scanOnTouchMove/preventTouchScrolling scanning input options * Add settings controls * Support scanOnTouchMove in TextScanner * Support preventTouchScrolling in TextScanner
This commit is contained in:
parent
73dd578821
commit
cdd649ea3d
@ -352,11 +352,13 @@
|
|||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"showAdvanced": false,
|
"showAdvanced": false,
|
||||||
|
"scanOnTouchMove": true,
|
||||||
"scanOnPenHover": true,
|
"scanOnPenHover": true,
|
||||||
"scanOnPenPress": true,
|
"scanOnPenPress": true,
|
||||||
"scanOnPenRelease": false,
|
"scanOnPenRelease": false,
|
||||||
"searchTerms": true,
|
"searchTerms": true,
|
||||||
"searchKanji": true
|
"searchKanji": true,
|
||||||
|
"preventTouchScrolling": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -369,11 +371,13 @@
|
|||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"showAdvanced": false,
|
"showAdvanced": false,
|
||||||
|
"scanOnTouchMove": true,
|
||||||
"scanOnPenHover": true,
|
"scanOnPenHover": true,
|
||||||
"scanOnPenPress": true,
|
"scanOnPenPress": true,
|
||||||
"scanOnPenRelease": false,
|
"scanOnPenRelease": false,
|
||||||
"searchTerms": true,
|
"searchTerms": true,
|
||||||
"searchKanji": true
|
"searchKanji": true,
|
||||||
|
"preventTouchScrolling": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -419,17 +423,23 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"showAdvanced",
|
"showAdvanced",
|
||||||
|
"scanOnTouchMove",
|
||||||
"scanOnPenHover",
|
"scanOnPenHover",
|
||||||
"scanOnPenPress",
|
"scanOnPenPress",
|
||||||
"scanOnPenRelease",
|
"scanOnPenRelease",
|
||||||
"searchTerms",
|
"searchTerms",
|
||||||
"searchKanji"
|
"searchKanji",
|
||||||
|
"preventTouchScrolling"
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"showAdvanced": {
|
"showAdvanced": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
},
|
},
|
||||||
|
"scanOnTouchMove": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
"scanOnPenHover": {
|
"scanOnPenHover": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": true
|
"default": true
|
||||||
@ -449,6 +459,10 @@
|
|||||||
"searchKanji": {
|
"searchKanji": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": true
|
"default": true
|
||||||
|
},
|
||||||
|
"preventTouchScrolling": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -522,11 +522,13 @@ class OptionsUtil {
|
|||||||
}
|
}
|
||||||
const createInputDefaultOptions = () => ({
|
const createInputDefaultOptions = () => ({
|
||||||
showAdvanced: false,
|
showAdvanced: false,
|
||||||
|
scanOnTouchMove: true,
|
||||||
scanOnPenHover: true,
|
scanOnPenHover: true,
|
||||||
scanOnPenPress: true,
|
scanOnPenPress: true,
|
||||||
scanOnPenRelease: false,
|
scanOnPenRelease: false,
|
||||||
searchTerms: true,
|
searchTerms: true,
|
||||||
searchKanji: true
|
searchKanji: true,
|
||||||
|
preventTouchScrolling: true
|
||||||
});
|
});
|
||||||
for (const {options: profileOptions} of options.profiles) {
|
for (const {options: profileOptions} of options.profiles) {
|
||||||
profileOptions.general.usePopupWindow = false;
|
profileOptions.general.usePopupWindow = false;
|
||||||
|
@ -99,11 +99,13 @@ class ScanInputsController {
|
|||||||
types: {mouse: true, touch: false, pen: false},
|
types: {mouse: true, touch: false, pen: false},
|
||||||
options: {
|
options: {
|
||||||
showAdvanced: false,
|
showAdvanced: false,
|
||||||
|
scanOnTouchMove: true,
|
||||||
scanOnPenHover: true,
|
scanOnPenHover: true,
|
||||||
scanOnPenPress: true,
|
scanOnPenPress: true,
|
||||||
scanOnPenRelease: false,
|
scanOnPenRelease: false,
|
||||||
searchTerms: true,
|
searchTerms: true,
|
||||||
searchKanji: true
|
searchKanji: true,
|
||||||
|
preventTouchScrolling: true
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}]);
|
}]);
|
||||||
|
@ -484,9 +484,11 @@
|
|||||||
<div class="scan-input-type-list-container form-control"><div>
|
<div class="scan-input-type-list-container form-control"><div>
|
||||||
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.searchTerms"><span>Search for terms</span></label></div>
|
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.searchTerms"><span>Search for terms</span></label></div>
|
||||||
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.searchKanji"><span>Search for kanji</span></label></div>
|
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.searchKanji"><span>Search for kanji</span></label></div>
|
||||||
|
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnTouchMove"><span>Scan on touch move</span></label></div>
|
||||||
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenHover"><span>Scan on pen hover</span></label></div>
|
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenHover"><span>Scan on pen hover</span></label></div>
|
||||||
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenPress"><span>Scan on pen press</span></label></div>
|
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenPress"><span>Scan on pen press</span></label></div>
|
||||||
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenRelease"><span>Scan on pen release</span></label></div>
|
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.scanOnPenRelease"><span>Scan on pen release</span></label></div>
|
||||||
|
<div><label class="scan-input-toggle"><input type="checkbox" class="scan-input-settings-checkbox" data-property="options.preventTouchScrolling"><span>Prevent touch/pen scrolling</span></label></div>
|
||||||
</div></div>
|
</div></div>
|
||||||
</div></div>
|
</div></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -120,12 +120,12 @@ class TextScanner extends EventDispatcher {
|
|||||||
include,
|
include,
|
||||||
exclude,
|
exclude,
|
||||||
types,
|
types,
|
||||||
options: {scanOnPenHover, scanOnPenPress, scanOnPenRelease, searchTerms, searchKanji}
|
options: {scanOnTouchMove, scanOnPenHover, scanOnPenPress, scanOnPenRelease, searchTerms, searchKanji, preventTouchScrolling}
|
||||||
}) => ({
|
}) => ({
|
||||||
include: this._getInputArray(include),
|
include: this._getInputArray(include),
|
||||||
exclude: this._getInputArray(exclude),
|
exclude: this._getInputArray(exclude),
|
||||||
types: this._getInputTypeSet(types),
|
types: this._getInputTypeSet(types),
|
||||||
options: {scanOnPenHover, scanOnPenPress, scanOnPenRelease, searchTerms, searchKanji}
|
options: {scanOnTouchMove, scanOnPenHover, scanOnPenPress, scanOnPenRelease, searchTerms, searchKanji, preventTouchScrolling}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
if (typeof deepContentScan === 'boolean') {
|
if (typeof deepContentScan === 'boolean') {
|
||||||
@ -392,7 +392,9 @@ class TextScanner extends EventDispatcher {
|
|||||||
const inputInfo = this._getMatchingInputGroupFromEvent(e, type);
|
const inputInfo = this._getMatchingInputGroupFromEvent(e, type);
|
||||||
if (inputInfo === null) { return; }
|
if (inputInfo === null) { return; }
|
||||||
|
|
||||||
this._searchAt(primaryTouch.clientX, primaryTouch.clientY, type, 'touchMove', inputInfo);
|
if (inputInfo.input.options.scanOnTouchMove) {
|
||||||
|
this._searchAt(primaryTouch.clientX, primaryTouch.clientY, type, 'touchMove', inputInfo);
|
||||||
|
}
|
||||||
|
|
||||||
e.preventDefault(); // Disable scroll
|
e.preventDefault(); // Disable scroll
|
||||||
}
|
}
|
||||||
@ -497,7 +499,7 @@ class TextScanner extends EventDispatcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const inputInfo = this._getMatchingInputGroupFromEvent(e, 'touch');
|
const inputInfo = this._getMatchingInputGroupFromEvent(e, 'touch');
|
||||||
if (inputInfo === null) { return; }
|
if (inputInfo === null || !inputInfo.input.options.scanOnTouchMove) { return; }
|
||||||
|
|
||||||
this._searchAt(e.clientX, e.clientY, 'touch', 'touchMove', inputInfo);
|
this._searchAt(e.clientX, e.clientY, 'touch', 'touchMove', inputInfo);
|
||||||
}
|
}
|
||||||
@ -748,6 +750,7 @@ class TextScanner extends EventDispatcher {
|
|||||||
if (inputInfo === null) { return; }
|
if (inputInfo === null) { return; }
|
||||||
|
|
||||||
const textSourceCurrentPrevious = this._textSourceCurrent !== null ? this._textSourceCurrent.clone() : null;
|
const textSourceCurrentPrevious = this._textSourceCurrent !== null ? this._textSourceCurrent.clone() : null;
|
||||||
|
const preventScroll = inputInfo.input.options.preventTouchScrolling;
|
||||||
|
|
||||||
await this._searchAt(x, y, type, cause, inputInfo);
|
await this._searchAt(x, y, type, cause, inputInfo);
|
||||||
|
|
||||||
@ -755,7 +758,7 @@ class TextScanner extends EventDispatcher {
|
|||||||
this._textSourceCurrent !== null &&
|
this._textSourceCurrent !== null &&
|
||||||
!this._textSourceCurrent.equals(textSourceCurrentPrevious)
|
!this._textSourceCurrent.equals(textSourceCurrentPrevious)
|
||||||
) {
|
) {
|
||||||
this._preventScroll = true;
|
this._preventScroll = preventScroll;
|
||||||
this._preventNextContextMenu = true;
|
this._preventNextContextMenu = true;
|
||||||
this._preventNextMouseDown = true;
|
this._preventNextMouseDown = true;
|
||||||
}
|
}
|
||||||
@ -776,13 +779,15 @@ class TextScanner extends EventDispatcher {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const preventScroll = inputInfo.input.options.preventTouchScrolling;
|
||||||
|
|
||||||
await this._searchAt(x, y, type, cause, inputInfo);
|
await this._searchAt(x, y, type, cause, inputInfo);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
prevent &&
|
prevent &&
|
||||||
this._textSourceCurrent !== null
|
this._textSourceCurrent !== null
|
||||||
) {
|
) {
|
||||||
this._preventScroll = true;
|
this._preventScroll = preventScroll;
|
||||||
this._preventNextContextMenu = true;
|
this._preventNextContextMenu = true;
|
||||||
this._preventNextMouseDown = true;
|
this._preventNextMouseDown = true;
|
||||||
this._preventNextClick = true;
|
this._preventNextClick = true;
|
||||||
|
@ -333,11 +333,13 @@ function createProfileOptionsUpdatedTestData1() {
|
|||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
showAdvanced: false,
|
showAdvanced: false,
|
||||||
|
scanOnTouchMove: true,
|
||||||
scanOnPenHover: true,
|
scanOnPenHover: true,
|
||||||
scanOnPenPress: true,
|
scanOnPenPress: true,
|
||||||
scanOnPenRelease: false,
|
scanOnPenRelease: false,
|
||||||
searchTerms: true,
|
searchTerms: true,
|
||||||
searchKanji: true
|
searchKanji: true,
|
||||||
|
preventTouchScrolling: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -350,11 +352,13 @@ function createProfileOptionsUpdatedTestData1() {
|
|||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
showAdvanced: false,
|
showAdvanced: false,
|
||||||
|
scanOnTouchMove: true,
|
||||||
scanOnPenHover: true,
|
scanOnPenHover: true,
|
||||||
scanOnPenPress: true,
|
scanOnPenPress: true,
|
||||||
scanOnPenRelease: false,
|
scanOnPenRelease: false,
|
||||||
searchTerms: true,
|
searchTerms: true,
|
||||||
searchKanji: true
|
searchKanji: true,
|
||||||
|
preventTouchScrolling: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -367,11 +371,13 @@ function createProfileOptionsUpdatedTestData1() {
|
|||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
showAdvanced: false,
|
showAdvanced: false,
|
||||||
|
scanOnTouchMove: true,
|
||||||
scanOnPenHover: true,
|
scanOnPenHover: true,
|
||||||
scanOnPenPress: true,
|
scanOnPenPress: true,
|
||||||
scanOnPenRelease: false,
|
scanOnPenRelease: false,
|
||||||
searchTerms: true,
|
searchTerms: true,
|
||||||
searchKanji: true
|
searchKanji: true,
|
||||||
|
preventTouchScrolling: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user