Sync multiple cursor animations

This commit is contained in:
Corey Johnson
2012-04-04 15:01:38 -07:00
parent 2489e19bb7
commit fb02290972
2 changed files with 13 additions and 1 deletions

View File

@@ -16,7 +16,9 @@ class Cursor extends View
@editor = editor
@anchor = new Anchor(@editor, screenPosition)
@selection = @editor.compositeSelection.addSelectionForCursor(this)
@one 'attach', => @updateAppearance()
@one 'attach', =>
@updateAppearance()
@editor.syncCursorAnimations()
handleBufferChange: (e) ->
@anchor.handleBufferChange(e)
@@ -52,6 +54,11 @@ class Cursor extends View
window.clearTimeout(@idleTimeout) if @idleTimeout
@idleTimeout = window.setTimeout (=> @addClass 'idle'), 200
resetCursorAnimation: ->
window.clearTimeout(@idleTimeout) if @idleTimeout
@removeClass 'idle'
_.defer => @addClass 'idle'
clearSelection: ->
@selection.clearSelection() unless @selection.retainSelection

View File

@@ -186,6 +186,7 @@ class Editor extends View
@off 'mousemove', moveHandler
reverse = @compositeSelection.getLastSelection().isReversed()
@compositeSelection.mergeIntersectingSelections({reverse})
@syncCursorAnimations()
renderLines: ->
@lineCache = []
@@ -514,5 +515,9 @@ class Editor extends View
else if desiredLeft < @scroller.scrollLeft()
@scroller.scrollLeft(desiredLeft)
syncCursorAnimations: ->
for cursor in @getCursors()
do (cursor) -> cursor.resetCursorAnimation()
logLines: ->
@renderer.logLines()