summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mannehed <samuel@cendio.se>2017-02-14 16:22:56 +0100
committerSamuel Mannehed <samuel@cendio.se>2017-02-16 13:59:34 +0100
commitb69dda9b19f538c648cb11faddc50f30b93bac47 (patch)
treeb3e3889a4b7081e3119b2768ed35ce4364038eb5
parent1658466579ee638aa29aaa7adfc18bb64348737c (diff)
downloadnovnc-b69dda9b19f538c648cb11faddc50f30b93bac47.tar.gz
Clean up some mouse workarounds
Adds comments that clarifies why they are needed. Also narrows the handler for contextmenu a bit.
-rw-r--r--core/input/devices.js19
1 files changed, 13 insertions, 6 deletions
diff --git a/core/input/devices.js b/core/input/devices.js
index e38f9c7..91a202c 100644
--- a/core/input/devices.js
+++ b/core/input/devices.js
@@ -198,7 +198,7 @@
},
_releaseMouse: function () {
- Util.releaseCapture(this._target);
+ Util.releaseCapture();
this._mouseCaptured = false;
},
@@ -330,7 +330,12 @@
if (!this._focused) { return true; }
var evt = (e ? e : window.event);
- /* Stop propagation if inside canvas area */
+ /*
+ * Stop propagation if inside canvas area
+ * Note: This is only needed for the 'click' event as it fails
+ * to fire properly for the target element so we have
+ * to listen on the document element instead.
+ */
if (evt.target == this._target) {
//Util.Debug("mouse event disabled");
Util.stopEvent(e);
@@ -357,9 +362,12 @@
c.addEventListener('mousemove', this._eventHandlers.mousemove);
c.addEventListener('wheel', this._eventHandlers.mousewheel);
- /* Work around right and middle click browser behaviors */
+ /* Prevent middle-click pasting (see above for why we bind to document) */
document.addEventListener('click', this._eventHandlers.mousedisable);
- document.body.addEventListener('contextmenu', this._eventHandlers.mousedisable);
+
+ /* preventDefault() on mousedown doesn't stop this event for some
+ reason so we have to explicitly block it */
+ c.addEventListener('contextmenu', this._eventHandlers.mousedisable);
},
ungrab: function () {
@@ -377,10 +385,9 @@
c.removeEventListener('mousemove', this._eventHandlers.mousemove);
c.removeEventListener('wheel', this._eventHandlers.mousewheel);
- /* Work around right and middle click browser behaviors */
document.removeEventListener('click', this._eventHandlers.mousedisable);
- document.body.removeEventListener('contextmenu', this._eventHandlers.mousedisable);
+ c.removeEventListener('contextmenu', this._eventHandlers.mousedisable);
}
};