Triple click selects line under cursor

This commit is contained in:
Corey Johnson
2012-02-03 13:11:42 -08:00
parent 275e7853af
commit bbf892de96
4 changed files with 40 additions and 6 deletions

View File

@@ -291,9 +291,36 @@ describe "Editor", ->
expect(editor.getCursorPosition()).toEqual(row: 0, column: 0)
[pageX, pageY] = window.pixelPositionForPoint(editor, [0, 8])
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 1}})
$(document).trigger 'mouseup'
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 2}})
expect(editor.getSelectedText()).toBe "quicksort"
describe "when it is clicked more then twice (tripple, quadruple, etc...)", ->
it "selects the line under the cursor", ->
expect(editor.getCursorPosition()).toEqual(row: 0, column: 0)
# Triple click
[pageX, pageY] = window.pixelPositionForPoint(editor, [1, 8])
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 1}})
$(document).trigger 'mouseup'
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 2}})
$(document).trigger 'mouseup'
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 3}})
expect(editor.getSelectedText()).toBe " var sort = function(items) {"
$(document).trigger 'mouseup'
# Quad click
[pageX, pageY] = window.pixelPositionForPoint(editor, [2, 3])
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 1}})
$(document).trigger 'mouseup'
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 2}})
$(document).trigger 'mouseup'
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 3}})
$(document).trigger 'mouseup'
editor.lines.trigger mousedownEvent({pageX, pageY, originalEvent: {detail: 4}})
expect(editor.getSelectedText()).toBe " if (items.length <= 1) return items;"
$(document).trigger 'mouseup'
describe "selection", ->
selection = null

View File

@@ -184,7 +184,8 @@ describe "Selection", ->
selection.selectWord()
expect(selection.getText()).toBe ''
describe ".selectLine()", ->
it "selects the entire line the cursor is on", ->
editor.setCursorPosition [1,2]
selection.selectLine()
expect(selection.getText()).toBe " var sort = function(items) {"

View File

@@ -83,10 +83,12 @@ class Editor extends Template
if clickCount == 1
@setCursorPosition @pointFromMouseEvent(e)
@selectTextOnMouseMovement()
else if clickCount == 2
@selection.selectWord()
@selectTextOnMouseMovement()
else if clickCount >= 3
@selection.selectLine()
@selectTextOnMouseMovement()
@hiddenInput.on "textInput", (e) =>
@insertText(e.originalEvent.data)

View File

@@ -114,6 +114,10 @@ class Selection extends Template
range = new Range([row, column + startOffset], [row, column + endOffset])
@setRange range
selectLine: ->
row = @cursor.getRow()
@setRange new Range([row, 0], [row, @editor.getCurrentLine().length])
selectRight: ->
@modifySelection =>
@cursor.moveRight()