From 9a2ee70af8b4ee1923f22c9003486ffa723e3cae Mon Sep 17 00:00:00 2001 From: nightwing Date: Sun, 24 Nov 2013 16:18:13 +0400 Subject: [PATCH] allow starting and cancelling mouse capture from outside --- lib/ace/lib/event.js | 2 ++ lib/ace/mouse/mouse_handler.js | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/ace/lib/event.js b/lib/ace/lib/event.js index 691d0019..4d407dfc 100644 --- a/lib/ace/lib/event.js +++ b/lib/ace/lib/event.js @@ -112,6 +112,8 @@ exports.capture = function(el, eventHandler, releaseCaptureHandler) { exports.addListener(document, "mousemove", eventHandler, true); exports.addListener(document, "mouseup", onMouseUp, true); exports.addListener(document, "dragstart", onMouseUp, true); + + return onMouseUp; }; exports.addMouseWheelListener = function(el, callback) { diff --git a/lib/ace/mouse/mouse_handler.js b/lib/ace/mouse/mouse_handler.js index 2565bd19..d9f6188f 100644 --- a/lib/ace/mouse/mouse_handler.js +++ b/lib/ace/mouse/mouse_handler.js @@ -115,6 +115,8 @@ var MouseHandler = function(editor) { self.x = e.clientX; self.y = e.clientY; mouseMoveHandler && mouseMoveHandler(e); + self.mouseEvent = new MouseEvent(e, self.editor); + self.$mouseMoved = true; }; var onCaptureEnd = function(e) { @@ -127,20 +129,24 @@ var MouseHandler = function(editor) { renderer.$moveTextAreaToCursor(); } self.isMousePressed = false; + self.$onCaptureMouseMove = self.releaseMouse = null; self.onMouseEvent("mouseup", e); }; var onCaptureInterval = function() { self[self.state] && self[self.state](); + self.$mouseMoved = false; }; if (useragent.isOldIE && ev.domEvent.type == "dblclick") { 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); }; + this.releaseMouse = null; }).call(MouseHandler.prototype); config.defineOptions(MouseHandler.prototype, "mouseHandler", {