diff --git a/src/app/cursor.coffee b/src/app/cursor.coffee index 6b48c488a..37d4d795a 100644 --- a/src/app/cursor.coffee +++ b/src/app/cursor.coffee @@ -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 diff --git a/src/app/editor.coffee b/src/app/editor.coffee index 3d6de5c69..9ba80fe3a 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -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()