Capture mouse events and filter irrelevant ones
This commit is contained in:
parent
0d0f754aad
commit
b1b342a97e
|
@ -486,7 +486,8 @@ function Mouse(defaults) {
|
|||
"use strict";
|
||||
|
||||
var that = {}, // Public API methods
|
||||
conf = {}; // Configuration attributes
|
||||
conf = {}, // Configuration attributes
|
||||
mouseCaptured = false;
|
||||
|
||||
// Configuration attributes
|
||||
Util.conf_defaults(conf, that, defaults, [
|
||||
|
@ -499,7 +500,23 @@ Util.conf_defaults(conf, that, defaults, [
|
|||
['touchButton', 'rw', 'int', 1, 'Button mask (1, 2, 4) for touch devices (0 means ignore clicks)']
|
||||
]);
|
||||
|
||||
function captureMouse() {
|
||||
// capturing the mouse ensures we get the mouseup event
|
||||
if (conf.target.setCapture) {
|
||||
conf.target.setCapture();
|
||||
}
|
||||
|
||||
// some browsers give us mouseup events regardless,
|
||||
// so if we never captured the mouse, we can disregard the event
|
||||
mouseCaptured = true;
|
||||
}
|
||||
|
||||
function releaseMouse() {
|
||||
if (conf.target.releaseCapture) {
|
||||
conf.target.releaseCapture();
|
||||
}
|
||||
mouseCaptured = false;
|
||||
}
|
||||
//
|
||||
// Private functions
|
||||
//
|
||||
|
@ -536,11 +553,17 @@ function onMouseButton(e, down) {
|
|||
}
|
||||
|
||||
function onMouseDown(e) {
|
||||
captureMouse();
|
||||
onMouseButton(e, 1);
|
||||
}
|
||||
|
||||
function onMouseUp(e) {
|
||||
if (!mouseCaptured) {
|
||||
return;
|
||||
}
|
||||
|
||||
onMouseButton(e, 0);
|
||||
releaseMouse();
|
||||
}
|
||||
|
||||
function onMouseWheel(e) {
|
||||
|
|
Loading…
Reference in New Issue