diff --git a/src/ace/Editor.js b/src/ace/Editor.js index e187af03..a68eeaba 100644 --- a/src/ace/Editor.js +++ b/src/ace/Editor.js @@ -28,8 +28,8 @@ var Editor = function(renderer, doc) { var mouseTarget = renderer.getMouseEventTarget(); ace.addListener(mouseTarget, "mousedown", ace.bind(this.onMouseDown, this)); - ace.addMultiMouseDownListener(mouseTarget, 2, ace.bind(this.onMouseDoubleClick, this)); - ace.addMultiMouseDownListener(mouseTarget, 3, ace.bind(this.onMouseTripleClick, this)); + ace.addMultiMouseDownListener(mouseTarget, 2, 500, ace.bind(this.onMouseDoubleClick, this)); + ace.addMultiMouseDownListener(mouseTarget, 3, 600, ace.bind(this.onMouseTripleClick, this)); ace.addMouseWheelListener(mouseTarget, ace.bind(this.onMouseWheel, this)); this.$selectionMarker = null; diff --git a/src/ace/lib/event.js b/src/ace/lib/event.js index 941f9da3..71344d19 100644 --- a/src/ace/lib/event.js +++ b/src/ace/lib/event.js @@ -136,16 +136,24 @@ require.def("ace/lib/event", ["ace/lib/core"], function(core) { event.addListener(el, "mousewheel", listener); }; - event.addMultiMouseDownListener = function(el, count, callback) { + event.addMultiMouseDownListener = function(el, count, timeout, callback) { var clicks = 0; + var startX, startY; + var listener = function(e) { clicks += 1; if (clicks == 1) { + startX = e.clientX; + startY = e.clientY; + setTimeout(function() { clicks = 0; - }, 600); + }, timeout || 600); } + if (Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5) + clicks = 0; + if (clicks == count) { clicks = 0; callback(e);