|
|
|
|
|
|
|
|
var rect = this.__mouseTarget.getBoundingClientRect(); |
|
|
var rect = this.__mouseTarget.getBoundingClientRect(); |
|
|
pos.x -= rect.left; |
|
|
pos.x -= rect.left; |
|
|
pos.y -= rect.top; |
|
|
pos.y -= rect.top; |
|
|
pos.inbounds = (pos.x >= 0 && pos.x < rect.right && pos.y >= 0 && pos.y < rect.bottom); |
|
|
|
|
|
|
|
|
pos.inbounds = (pos.x >= 0 && pos.x < rect.width && pos.y >= 0 && pos.y < rect.height); |
|
|
} |
|
|
} |
|
|
|
|
|
pos.x = Math.floor(pos.x); |
|
|
|
|
|
pos.y = Math.floor(pos.y); |
|
|
return pos; |
|
|
return pos; |
|
|
}).bind(this); |
|
|
}).bind(this); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.__mousePosition = pos; |
|
|
this.__mousePosition = pos; |
|
|
this.__mouseLastButton = button; |
|
|
this.__mouseLastButton = button; |
|
|
this.__mouseLastAction = "mouseup"; |
|
|
this.__mouseLastAction = "mouseup"; |
|
|
this.__emitter.emit("mouseup", { |
|
|
|
|
|
|
|
|
var data = { |
|
|
source: this, |
|
|
source: this, |
|
|
lastX: pos.lastX, |
|
|
lastX: pos.lastX, |
|
|
lastY: pos.lastY, |
|
|
lastY: pos.lastY, |
|
|
|
|
|
|
|
|
y: pos.y, |
|
|
y: pos.y, |
|
|
button: button, |
|
|
button: button, |
|
|
action: "mouseup" |
|
|
action: "mouseup" |
|
|
}); |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
this.__emitter.emit("mouseup", data); |
|
|
|
|
|
if (diff <= MOUSECLICK_DELAY && this.__mouseButtons.length <= 0){ |
|
|
|
|
|
this.__emitter.emit("mouseclick", data); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}).bind(this); |
|
|
}).bind(this); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: Finish me! |
|
|
// TODO: Finish me! |
|
|
}).bind(this); |
|
|
}).bind(this); |
|
|
|
|
|
|
|
|
|
|
|
// This event is purely for preventing Default behaviors on mouse events we're not using. |
|
|
|
|
|
var handle_mouseprevdef = (function(e){ |
|
|
|
|
|
var pos = mousePosition(e); |
|
|
|
|
|
if (this.__preventDefaults && pos.inbounds) |
|
|
|
|
|
e.preventDefault(); |
|
|
|
|
|
}).bind(this); |
|
|
|
|
|
|
|
|
return (function(enable){ |
|
|
return (function(enable){ |
|
|
enable = (enable !== false); |
|
|
enable = (enable !== false); |
|
|
if (enable){ |
|
|
if (enable){ |
|
|
|
|
|
|
|
|
window.addEventListener("mousedown", handle_mousedown); |
|
|
window.addEventListener("mousedown", handle_mousedown); |
|
|
window.addEventListener("mouseup", handle_mouseup); |
|
|
window.addEventListener("mouseup", handle_mouseup); |
|
|
window.addEventListener("mousewheel", handle_mousewheel); |
|
|
window.addEventListener("mousewheel", handle_mousewheel); |
|
|
|
|
|
window.addEventListener("click", handle_mouseprevdef); |
|
|
|
|
|
window.addEventListener("dblclick", handle_mouseprevdef); |
|
|
} else { |
|
|
} else { |
|
|
window.removeEventListener("mousemove", handle_mousemove); |
|
|
window.removeEventListener("mousemove", handle_mousemove); |
|
|
window.removeEventListener("mousedown", handle_mousedown); |
|
|
window.removeEventListener("mousedown", handle_mousedown); |
|
|
window.removeEventListener("mouseup", handle_mouseup); |
|
|
window.removeEventListener("mouseup", handle_mouseup); |
|
|
window.removeEventListener("mousewheel", handle_mousewheel); |
|
|
window.removeEventListener("mousewheel", handle_mousewheel); |
|
|
|
|
|
window.removeEventListener("click", handle_mouseprevdef); |
|
|
|
|
|
window.removeEventListener("dblclick", handle_mouseprevdef); |
|
|
} |
|
|
} |
|
|
}).bind(this); |
|
|
}).bind(this); |
|
|
}).apply(this); |
|
|
}).apply(this); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
listen(ename, func, owner=null, once=false){ |
|
|
listen(ename, func, owner=null, once=false){ |
|
|
if ((["keyup", "keydown", "keypress", "mousemove", "mousedown", "mouseup"]).indexOf(ename) >= 0){ |
|
|
|
|
|
|
|
|
if ((["keyup", "keydown", "keypress", "mousemove", "mousedown", "mouseup", "mouseclick"]).indexOf(ename) >= 0){ |
|
|
this.__emitter.listen(ename, func, owner, once); |
|
|
this.__emitter.listen(ename, func, owner, once); |
|
|
} else { |
|
|
} else { |
|
|
ename = ReorderEventName(ename); |
|
|
ename = ReorderEventName(ename); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
unlisten(ename, func, owner=null){ |
|
|
unlisten(ename, func, owner=null){ |
|
|
if ((["keyup", "keydown", "keypress", "mousemove", "mousedown", "mouseup"]).indexOf(ename) >= 0){ |
|
|
|
|
|
|
|
|
if ((["keyup", "keydown", "keypress", "mousemove", "mousedown", "mouseup", "mouseclick"]).indexOf(ename) >= 0){ |
|
|
this.__emitter.unlisten(ename, func, owner); |
|
|
this.__emitter.unlisten(ename, func, owner); |
|
|
} else { |
|
|
} else { |
|
|
ename = ReorderEventName(ename); |
|
|
ename = ReorderEventName(ename); |