From 73dd578821d1373d4504778318e2e2f26b79a80e Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Sat, 26 Sep 2020 19:24:21 -0400 Subject: Add middle mouse prevention option (#868) * Add preventMiddleMouse option to TextScanner * Add preventMiddleMouse options * Add options * Apply preventMiddleMouse options --- ext/mixed/js/display.js | 3 ++- ext/mixed/js/text-scanner.js | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'ext/mixed/js') diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index e5f12a1a..c7ad8894 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -251,7 +251,8 @@ class Display extends EventDispatcher { pointerEventsEnabled: scanning.pointerEventsEnabled, scanLength: scanning.length, sentenceExtent: options.anki.sentenceExt, - layoutAwareScan: scanning.layoutAwareScan + layoutAwareScan: scanning.layoutAwareScan, + preventMiddleMouse: scanning.preventMiddleMouse.onSearchQuery } }); } diff --git a/ext/mixed/js/text-scanner.js b/ext/mixed/js/text-scanner.js index aacc683a..b8d4faf5 100644 --- a/ext/mixed/js/text-scanner.js +++ b/ext/mixed/js/text-scanner.js @@ -49,6 +49,7 @@ class TextScanner extends EventDispatcher { this._scanLength = 1; this._sentenceExtent = 1; this._layoutAwareScan = false; + this._preventMiddleMouse = false; this._inputs = []; this._enabled = false; @@ -113,7 +114,7 @@ class TextScanner extends EventDispatcher { } } - setOptions({inputs, deepContentScan, selectText, delay, touchInputEnabled, pointerEventsEnabled, scanLength, sentenceExtent, layoutAwareScan}) { + setOptions({inputs, deepContentScan, selectText, delay, touchInputEnabled, pointerEventsEnabled, scanLength, sentenceExtent, layoutAwareScan, preventMiddleMouse}) { if (Array.isArray(inputs)) { this._inputs = inputs.map(({ include, @@ -151,6 +152,9 @@ class TextScanner extends EventDispatcher { if (typeof layoutAwareScan === 'boolean') { this._layoutAwareScan = layoutAwareScan; } + if (typeof preventMiddleMouse === 'boolean') { + this._preventMiddleMouse = preventMiddleMouse; + } } getTextSourceContent(textSource, length, layoutAwareScan) { @@ -282,9 +286,18 @@ class TextScanner extends EventDispatcher { return false; } - if (e.button === 0) { // Primary - this._scanTimerClear(); - this.clearSelection(false); + switch (e.button) { + case 0: // Primary + this._scanTimerClear(); + this.clearSelection(false); + break; + case 1: // Middle + if (this._preventMiddleMouse) { + e.preventDefault(); + e.stopPropagation(); + return false; + } + break; } } -- cgit v1.2.3