double clicks need to be close to each other

This commit is contained in:
Fabian Jakobs 2010-09-21 10:38:31 +02:00
commit 4e9c8aae48
2 changed files with 12 additions and 4 deletions

View file

@ -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;

View file

@ -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);