diff --git a/lib/ace/mouse_handler.js b/lib/ace/mouse_handler.js index e3e74527..c17b47a7 100644 --- a/lib/ace/mouse_handler.js +++ b/lib/ace/mouse_handler.js @@ -94,6 +94,7 @@ var MouseHandler = function(editor) { var pageY = event.getDocumentY(e); var pos = this.$getEventPosition(e); var editor = this.editor; + var self = this; var selectionRange = editor.getSelectionRange(); var selectionEmpty = selectionRange.isEmpty(); var state = STATE_UNKNOWN; @@ -122,7 +123,6 @@ var MouseHandler = function(editor) { editor.renderer.scrollCursorIntoView(); - var self = this; var mousePageX, mousePageY; var overwrite = editor.getOverwrite(); var dragCursor = null; @@ -135,13 +135,12 @@ var MouseHandler = function(editor) { var onMouseSelectionEnd = function() { clearInterval(timerId); - if (state == STATE_UNKNOWN) { + if (state == STATE_UNKNOWN) onStartSelect(pos); - } else if (state == STATE_DRAG) + else if (state == STATE_DRAG) onMouseDragSelectionEnd(); - else - self.$clickSelection = null; - + + self.$clickSelection = null; state = STATE_UNKNOWN; }; @@ -149,7 +148,6 @@ var MouseHandler = function(editor) { dom.removeCssClass(editor.container, "ace_dragging"); if (!self.$clickSelection) { - self.$clickSelection = null; if (!dragCursor) { editor.moveCursorToPosition(pos); editor.selection.clearSelection(pos.row, pos.column); @@ -206,9 +204,10 @@ var MouseHandler = function(editor) { if (e.shiftKey) editor.selection.selectToPosition(pos) else { - editor.moveCursorToPosition(pos); - if (!editor.$clickSelection) + if (!self.$clickSelection) { + editor.moveCursorToPosition(pos); editor.selection.clearSelection(pos.row, pos.column); + } } state = STATE_SELECT; } @@ -217,7 +216,7 @@ var MouseHandler = function(editor) { var cursor = editor.renderer.screenToTextCoordinates(mousePageX, mousePageY); cursor.row = Math.max(0, Math.min(cursor.row, editor.session.getLength()-1)); - if (self.$clickSelection) { + if (self.$clickSelection) { if (self.$clickSelection.contains(cursor.row, cursor.column)) { editor.selection.setSelectionRange(self.$clickSelection); } else {