aboutsummaryrefslogtreecommitdiff
path: root/ext/mixed/js/display.js
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2019-11-05 19:04:13 -0800
committerAlex Yatskov <alex@foosoft.net>2019-11-05 19:04:13 -0800
commit08ad2779678cd447bd747c2b155ef9b5135fdf5d (patch)
treefaa54cbf9176989f9bd3c3b90ff3e032189adb20 /ext/mixed/js/display.js
parent438498435227cfa59cf9ed3430045b288cd2a7c0 (diff)
parent91c01e0a7eeeb851344a22ace8a5fa0b873a3e57 (diff)
Merge branch 'master' into testing
Diffstat (limited to 'ext/mixed/js/display.js')
-rw-r--r--ext/mixed/js/display.js23
1 files changed, 22 insertions, 1 deletions
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js
index b40228b0..6d992897 100644
--- a/ext/mixed/js/display.js
+++ b/ext/mixed/js/display.js
@@ -35,6 +35,7 @@ class Display {
this.persistentEventListeners = [];
this.interactive = false;
this.eventListenersActive = false;
+ this.clickScanPrevent = false;
this.windowScroll = new WindowScroll();
@@ -81,6 +82,22 @@ class Display {
}
}
+ onGlossaryMouseDown(e) {
+ if (Frontend.isMouseButton('primary', e)) {
+ this.clickScanPrevent = false;
+ }
+ }
+
+ onGlossaryMouseMove(e) {
+ this.clickScanPrevent = true;
+ }
+
+ onGlossaryMouseUp(e) {
+ if (!this.clickScanPrevent && Frontend.isMouseButton('primary', e)) {
+ this.onTermLookup(e);
+ }
+ }
+
async onTermLookup(e) {
try {
e.preventDefault();
@@ -157,8 +174,10 @@ class Display {
const handler = handlers[key];
if (handler(this, e)) {
e.preventDefault();
+ return true;
}
}
+ return false;
}
onWheel(e) {
@@ -250,7 +269,9 @@ class Display {
this.addEventListeners('.kanji-link', 'click', this.onKanjiLookup.bind(this));
this.addEventListeners('.source-term', 'click', this.onSourceTermView.bind(this));
if (this.options.scanning.enablePopupSearch) {
- this.addEventListeners('.glossary-item', 'click', this.onTermLookup.bind(this));
+ this.addEventListeners('.glossary-item', 'mouseup', this.onGlossaryMouseUp.bind(this));
+ this.addEventListeners('.glossary-item', 'mousedown', this.onGlossaryMouseDown.bind(this));
+ this.addEventListeners('.glossary-item', 'mousemove', this.onGlossaryMouseMove.bind(this));
}
} else {
Display.clearEventListeners(this.eventListeners);