From b2193f714b6c24e2f3995b5f5e4b8f77c00ff110 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Tue, 8 Mar 2011 10:15:28 +0100 Subject: [PATCH] move cursor to mouse on code dragging --- lib/ace/mouse_handler.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/ace/mouse_handler.js b/lib/ace/mouse_handler.js index 6e7fa316..112816a0 100644 --- a/lib/ace/mouse_handler.js +++ b/lib/ace/mouse_handler.js @@ -126,8 +126,8 @@ var MouseHandler = function(editor) { var mousePageX, mousePageY; var overwrite = editor.getOverwrite(); - var dragCursor = null; var mousedownTime = (new Date()).getTime(); + var dragCursor, dragRange; var onMouseSelection = function(e) { mousePageX = event.getDocumentX(e); @@ -147,6 +147,7 @@ var MouseHandler = function(editor) { var onMouseDragSelectionEnd = function() { dom.removeCssClass(editor.container, "ace_dragging"); + editor.session.removeMarker(dragSelectionMarker); if (!self.$clickSelection) { if (!dragCursor) { @@ -158,14 +159,13 @@ var MouseHandler = function(editor) { if (!dragCursor) return; - var selection = editor.getSelectionRange(); - if (selection.contains(dragCursor.row, dragCursor.column)) { + if (dragRange.contains(dragCursor.row, dragCursor.column)) { dragCursor = null; return; } editor.clearSelection(); - var newRange = editor.moveText(selection, dragCursor); + var newRange = editor.moveText(dragRange, dragCursor); if (!newRange) { dragCursor = null; return; @@ -190,6 +190,10 @@ var MouseHandler = function(editor) { onStartSelect(cursor); } else if ((time - mousedownTime) > DRAG_TIMER) { state = STATE_DRAG; + dragRange = editor.getSelectionRange(); + var style = editor.getSelectionStyle(); + dragSelectionMarker = editor.session.addMarker(dragRange, "ace_selection", style); + editor.clearSelection(); dom.addCssClass(editor.container, "ace_dragging"); } @@ -242,8 +246,7 @@ var MouseHandler = function(editor) { dragCursor.row = Math.max(0, Math.min(dragCursor.row, editor.session.getLength() - 1)); - editor.renderer.updateCursor(dragCursor, overwrite); - editor.renderer.scrollCursorIntoView(); + editor.moveCursorToPosition(dragCursor); }; event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);