From c5a53431e892cb27b37cf5d0518ac1bb39475b7d Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 18 Oct 2011 10:16:47 +0500 Subject: [PATCH] dragging when ctrl/alt is pressed must copy selection --- lib/ace/mouse/default_handlers.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/ace/mouse/default_handlers.js b/lib/ace/mouse/default_handlers.js index cecf15cc..5ae13ffc 100644 --- a/lib/ace/mouse/default_handlers.js +++ b/lib/ace/mouse/default_handlers.js @@ -126,18 +126,18 @@ function DefaultHandlers(editor) { mousePageY = event.getDocumentY(e); }; - var onMouseSelectionEnd = function() { + var onMouseSelectionEnd = function(e) { clearInterval(timerId); if (state == STATE_UNKNOWN) onStartSelect(pos); else if (state == STATE_DRAG) - onMouseDragSelectionEnd(); + onMouseDragSelectionEnd(e); _self.$clickSelection = null; state = STATE_UNKNOWN; }; - var onMouseDragSelectionEnd = function() { + var onMouseDragSelectionEnd = function(e) { dom.removeCssClass(editor.container, "ace_dragging"); editor.session.removeMarker(dragSelectionMarker); @@ -157,7 +157,12 @@ function DefaultHandlers(editor) { } editor.clearSelection(); - var newRange = editor.moveText(dragRange, dragCursor); + if (e && (e.ctrlKey || e.altKey)) { + var session = editor.session; + var newRange = session.insert(dragCursor, session.getTextRange(dragRange)); + } else { + var newRange = editor.moveText(dragRange, dragCursor); + } if (!newRange) { dragCursor = null; return;