From e7b952a55e61c4b97142a9a745c189e5cf91f5a8 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 4 Jul 2012 19:26:07 +0400 Subject: [PATCH] fix mouse handling for ie8 --- lib/ace/lib/event.js | 16 ++++++++++++---- lib/ace/mouse/mouse_handler.js | 9 +++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/ace/lib/event.js b/lib/ace/lib/event.js index 0948f158..87da2cb2 100644 --- a/lib/ace/lib/event.js +++ b/lib/ace/lib/event.js @@ -193,7 +193,7 @@ exports.addMultiMouseDownListener = function(el, timeouts, eventHandler, callbac 4: "quadclick" }; - var listener = function(e) { + exports.addListener(el, "mousedown", function(e) { if (exports.getButton(e) != 0) { clicks = 0; } else { @@ -219,10 +219,18 @@ exports.addMultiMouseDownListener = function(el, timeouts, eventHandler, callbac clicks = 0; else if (clicks > 1) return eventHandler[callbackName](eventNames[clicks], e); - }; + }); - exports.addListener(el, "mousedown", listener); - useragent.isOldIE && exports.addListener(el, "dblclick", listener); + if (useragent.isOldIE) { + exports.addListener(el, "dblclick", function(e) { + clicks = 2; + if (timer) + clearTimeout(timer); + timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600); + eventHandler[callbackName]("mousedown", e); + eventHandler[callbackName](eventNames[clicks], e); + }); + } }; function normalizeCommandKeys(callback, e, keyCode) { diff --git a/lib/ace/mouse/mouse_handler.js b/lib/ace/mouse/mouse_handler.js index f108a7dc..b8e992a3 100644 --- a/lib/ace/mouse/mouse_handler.js +++ b/lib/ace/mouse/mouse_handler.js @@ -41,6 +41,7 @@ define(function(require, exports, module) { "use strict"; var event = require("../lib/event"); +var useragent = require("../lib/useragent"); var DefaultHandlers = require("./default_handlers").DefaultHandlers; var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler; var MouseEvent = require("./mouse_event").MouseEvent; @@ -148,6 +149,14 @@ var MouseHandler = function(editor) { var onCaptureInterval = function() { self[self.state] && self[self.state](); } + + if (useragent.isOldIE && ev.domEvent.type == "dblclick") { + setTimeout(function() { + onCaptureInterval(); + onCaptureEnd(ev.domEvent); + }); + return; + } event.capture(this.editor.container, onMouseMove, onCaptureEnd); var timerId = setInterval(onCaptureInterval, 20);