allow starting and cancelling mouse capture from outside

This commit is contained in:
nightwing 2013-11-24 16:18:13 +04:00
commit 9a2ee70af8
2 changed files with 9 additions and 1 deletions

View file

@ -112,6 +112,8 @@ exports.capture = function(el, eventHandler, releaseCaptureHandler) {
exports.addListener(document, "mousemove", eventHandler, true); exports.addListener(document, "mousemove", eventHandler, true);
exports.addListener(document, "mouseup", onMouseUp, true); exports.addListener(document, "mouseup", onMouseUp, true);
exports.addListener(document, "dragstart", onMouseUp, true); exports.addListener(document, "dragstart", onMouseUp, true);
return onMouseUp;
}; };
exports.addMouseWheelListener = function(el, callback) { exports.addMouseWheelListener = function(el, callback) {

View file

@ -115,6 +115,8 @@ var MouseHandler = function(editor) {
self.x = e.clientX; self.x = e.clientX;
self.y = e.clientY; self.y = e.clientY;
mouseMoveHandler && mouseMoveHandler(e); mouseMoveHandler && mouseMoveHandler(e);
self.mouseEvent = new MouseEvent(e, self.editor);
self.$mouseMoved = true;
}; };
var onCaptureEnd = function(e) { var onCaptureEnd = function(e) {
@ -127,20 +129,24 @@ var MouseHandler = function(editor) {
renderer.$moveTextAreaToCursor(); renderer.$moveTextAreaToCursor();
} }
self.isMousePressed = false; self.isMousePressed = false;
self.$onCaptureMouseMove = self.releaseMouse = null;
self.onMouseEvent("mouseup", e); self.onMouseEvent("mouseup", e);
}; };
var onCaptureInterval = function() { var onCaptureInterval = function() {
self[self.state] && self[self.state](); self[self.state] && self[self.state]();
self.$mouseMoved = false;
}; };
if (useragent.isOldIE && ev.domEvent.type == "dblclick") { if (useragent.isOldIE && ev.domEvent.type == "dblclick") {
return setTimeout(function() {onCaptureEnd(ev);}); return setTimeout(function() {onCaptureEnd(ev);});
} }
event.capture(this.editor.container, onMouseMove, onCaptureEnd); self.$onCaptureMouseMove = onMouseMove;
self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);
var timerId = setInterval(onCaptureInterval, 20); var timerId = setInterval(onCaptureInterval, 20);
}; };
this.releaseMouse = null;
}).call(MouseHandler.prototype); }).call(MouseHandler.prototype);
config.defineOptions(MouseHandler.prototype, "mouseHandler", { config.defineOptions(MouseHandler.prototype, "mouseHandler", {