Ensure new non-empty selections have an invisible cursor.

This commit is contained in:
Nathan Sobo
2013-04-04 17:48:02 -06:00
parent 34019951d3
commit 31579703f0
6 changed files with 19 additions and 2 deletions

View File

@@ -719,6 +719,8 @@ describe "EditSession", ->
[[4, 16], [4, 21]]
[[4, 25], [4, 29]]
]
for cursor in editSession.getCursors()
expect(cursor.isVisible()).toBeFalsy()
it "honors the original selection's region when adding across shorter lines", ->
editSession.setSelectedBufferRange([[3, 22], [3, 38]])

View File

@@ -27,6 +27,9 @@ class BufferMarker
isReversed: ->
@tailPosition? and @headPosition.isLessThan(@tailPosition)
hasTail: ->
@tailPosition?
getRange: ->
if @tailPosition
new Range(@tailPosition, @headPosition)

View File

@@ -12,9 +12,9 @@ class Cursor
needsAutoscroll: null
constructor: ({@editSession, @marker}) ->
@updateVisibility()
@editSession.observeMarker @marker, (e) =>
@setVisible(@selection.isEmpty())
@updateVisibility()
{oldHeadScreenPosition, newHeadScreenPosition} = e
{oldHeadBufferPosition, newHeadBufferPosition} = e
{bufferChanged} = e
@@ -59,6 +59,9 @@ class Cursor
unless fn()
@trigger 'autoscrolled' if @needsAutoscroll
updateVisibility: ->
@setVisible(not @editSession.doesMarkerHaveTail(@marker))
setVisible: (visible) ->
if @visible != visible
@visible = visible

View File

@@ -400,6 +400,9 @@ class DisplayBuffer
isMarkerReversed: (id) ->
@buffer.isMarkerReversed(id)
doesMarkerHaveTail: (id) ->
@buffer.doesMarkerHaveTail(id)
observeMarker: (id, callback) ->
@getMarker(id).observe(callback)

View File

@@ -556,6 +556,9 @@ class EditSession
isMarkerReversed: (args...) ->
@displayBuffer.isMarkerReversed(args...)
doesMarkerHaveTail: (args...) ->
@displayBuffer.doesMarkerHaveTail(args...)
hasMultipleCursors: ->
@getCursors().length > 1

View File

@@ -339,6 +339,9 @@ class Buffer
isMarkerReversed: (id) ->
@validMarkers[id]?.isReversed()
doesMarkerHaveTail: (id) ->
@validMarkers[id]?.hasTail()
observeMarker: (id, callback) ->
@validMarkers[id]?.observe(callback)