diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index 6445d192a..50a83e468 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -882,6 +882,12 @@ describe "Editor", -> editor.selectAll() expect(editor.scrollTop()).toBe 0 + # regression: does not scroll the scroll view when the editor is refocused + editor.hiddenInput.blur() + editor.hiddenInput.focus() + expect(editor.scrollTop()).toBe 0 + expect(editor.scrollView.scrollTop()).toBe 0 + # does auto-scroll when the selection is cleared editor.moveCursorDown() expect(editor.scrollTop()).toBeGreaterThan(0) diff --git a/src/app/cursor-view.coffee b/src/app/cursor-view.coffee index 3b4deb083..f4fad1c62 100644 --- a/src/app/cursor-view.coffee +++ b/src/app/cursor-view.coffee @@ -32,20 +32,18 @@ class CursorView extends View super updateAppearance: (options={}) -> + autoscroll = options.autoscroll ? true screenPosition = @getScreenPosition() pixelPosition = @getPixelPosition() @css(pixelPosition) - - if @cursor == @editor.getLastCursor() - @autoscroll() if options.autoscroll ? true - @editor.hiddenInput.css(pixelPosition) - + @autoscroll() if @cursor.isLastCursor() and autoscroll @setVisible(@cursor.isVisible() and not @editor.isFoldedAtScreenRow(screenPosition.row)) getPixelPosition: -> @editor.pixelPositionForScreenPosition(@getScreenPosition()) autoscroll: -> + pixelPosition = @editor.scrollTo(@getPixelPosition()) setVisible: (visible) -> diff --git a/src/app/cursor.coffee b/src/app/cursor.coffee index fe38ed242..c5036f716 100644 --- a/src/app/cursor.coffee +++ b/src/app/cursor.coffee @@ -49,6 +49,9 @@ class Cursor isVisible: -> @visible + isLastCursor: -> + this == @editor.getLastCursor() + clearSelection: -> if @selection @selection.clear() unless @selection.retainSelection diff --git a/src/app/editor.coffee b/src/app/editor.coffee index a238921bd..71ad5498b 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -18,9 +18,9 @@ class Editor extends View @content: (params) -> @div class: @classes(params), tabindex: -1, => @subview 'gutter', new Gutter + @input class: 'hidden-input', outlet: 'hiddenInput' @div class: 'scroll-view', outlet: 'scrollView', => @div class: 'lines', outlet: 'renderedLines', => - @input class: 'hidden-input', outlet: 'hiddenInput' @div class: 'vertical-scrollbar', outlet: 'verticalScrollbar', => @div outlet: 'verticalScrollbarContent'