allow starting and cancelling mouse capture from outside
This commit is contained in:
parent
4cb1e7b849
commit
9a2ee70af8
2 changed files with 9 additions and 1 deletions
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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", {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue