diff --git a/spec/display-buffer-spec.coffee b/spec/display-buffer-spec.coffee index 95f22acca..386cbf062 100644 --- a/spec/display-buffer-spec.coffee +++ b/spec/display-buffer-spec.coffee @@ -48,7 +48,6 @@ describe "DisplayBuffer", -> expect(displayBuffer.getLineCount()).toBe 100 + originalLineCount it "reassigns the scrollTop if it exceeds the max possible value after lines are removed", -> - displayBuffer.manageScrollPosition = true displayBuffer.setHeight(50) displayBuffer.setLineHeightInPixels(10) displayBuffer.setScrollTop(80) @@ -287,7 +286,6 @@ describe "DisplayBuffer", -> it "sets ::scrollLeft to 0 and keeps it there when soft wrapping is enabled", -> displayBuffer.setDefaultCharWidth(10) displayBuffer.setWidth(85) - displayBuffer.manageScrollPosition = true displayBuffer.setSoftWrapped(false) displayBuffer.setScrollLeft(Infinity) @@ -1174,7 +1172,6 @@ describe "DisplayBuffer", -> describe "::setScrollTop", -> beforeEach -> - displayBuffer.manageScrollPosition = true displayBuffer.setLineHeightInPixels(10) it "disallows negative values", -> @@ -1196,7 +1193,6 @@ describe "DisplayBuffer", -> describe "when editor.scrollPastEnd is false", -> beforeEach -> atom.config.set("editor.scrollPastEnd", false) - displayBuffer.manageScrollPosition = true displayBuffer.setLineHeightInPixels(10) it "does not add the height of the view to the scroll height", -> @@ -1209,7 +1205,6 @@ describe "DisplayBuffer", -> describe "when editor.scrollPastEnd is true", -> beforeEach -> atom.config.set("editor.scrollPastEnd", true) - displayBuffer.manageScrollPosition = true displayBuffer.setLineHeightInPixels(10) it "adds the height of the view to the scroll height", -> @@ -1221,7 +1216,6 @@ describe "DisplayBuffer", -> describe "::setScrollLeft", -> beforeEach -> - displayBuffer.manageScrollPosition = true displayBuffer.setLineHeightInPixels(10) displayBuffer.setDefaultCharWidth(10) @@ -1242,7 +1236,6 @@ describe "DisplayBuffer", -> describe "::scrollToScreenPosition(position, [options])", -> beforeEach -> - displayBuffer.manageScrollPosition = true displayBuffer.setLineHeightInPixels(10) displayBuffer.setDefaultCharWidth(10) displayBuffer.setHorizontalScrollbarHeight(0) @@ -1320,6 +1313,7 @@ describe "DisplayBuffer", -> expect(displayBuffer.getVisibleRowRange()).toEqual [0, 0] it "ends at last buffer row even if there's more space available", -> + displayBuffer.setHeight(150) displayBuffer.setScrollTop(60) - expect(displayBuffer.getVisibleRowRange()).toEqual [6, 13] + expect(displayBuffer.getVisibleRowRange()).toEqual [0, 13] diff --git a/spec/text-editor-spec.coffee b/spec/text-editor-spec.coffee index cddb8bdf6..bd412ca98 100644 --- a/spec/text-editor-spec.coffee +++ b/spec/text-editor-spec.coffee @@ -921,7 +921,6 @@ describe "TextEditor", -> describe "autoscroll", -> beforeEach -> - editor.manageScrollPosition = true editor.setVerticalScrollMargin(2) editor.setHorizontalScrollMargin(2) editor.setLineHeightInPixels(10) @@ -1254,7 +1253,6 @@ describe "TextEditor", -> expect(editor.getSelectedBufferRange()).toEqual [[0,0], [2,0]] it "autoscrolls to the selection", -> - editor.manageScrollPosition = true editor.setLineHeightInPixels(10) editor.setDefaultCharWidth(10) editor.setHeight(50) @@ -1523,10 +1521,9 @@ describe "TextEditor", -> describe ".setSelectedBufferRange(range)", -> describe "when the 'autoscroll' option is true", -> it "autoscrolls to the selection", -> - editor.manageScrollPosition = true editor.setLineHeightInPixels(10) editor.setDefaultCharWidth(10) - editor.setHeight(50) + editor.setHeight(70) editor.setWidth(50) editor.setHorizontalScrollbarHeight(0) @@ -1560,8 +1557,6 @@ describe "TextEditor", -> expect(editor.getSelectedBufferRanges()).toEqual [[[0, 0], [0, 0]], [[3, 4], [5, 6]]] it "autoscrolls to the added selection if needed", -> - editor.manageScrollPosition = true - editor.setLineHeightInPixels(10) editor.setDefaultCharWidth(10) editor.setHeight(50) @@ -1922,7 +1917,6 @@ describe "TextEditor", -> expect(cursor2.getBufferPosition()).toEqual [2, 7] it "autoscrolls to the last cursor", -> - editor.manageScrollPosition = true editor.setCursorScreenPosition([1, 2]) editor.addCursorAtScreenPosition([10, 4]) editor.setLineHeightInPixels(10) @@ -4072,8 +4066,6 @@ describe "TextEditor", -> describe ".pageUp/Down()", -> it "scrolls one screen height up or down and moves the cursor one page length", -> - editor.manageScrollPosition = true - editor.setLineHeightInPixels(10) editor.setHeight(50) expect(editor.getScrollHeight()).toBe 130 @@ -4097,8 +4089,6 @@ describe "TextEditor", -> describe ".selectPageUp/Down()", -> it "selects one screen height of text up or down", -> - editor.manageScrollPosition = true - editor.setLineHeightInPixels(10) editor.setHeight(50) expect(editor.getScrollHeight()).toBe 130 diff --git a/src/cursor.coffee b/src/cursor.coffee index 33f50ca9c..2a0665485 100644 --- a/src/cursor.coffee +++ b/src/cursor.coffee @@ -15,7 +15,6 @@ class Cursor extends Model bufferPosition: null goalColumn: null visible: true - needsAutoscroll: null # Instantiated by a {TextEditor} constructor: ({@editor, @marker, id}) -> @@ -30,9 +29,7 @@ class Cursor extends Model {textChanged} = e return if oldHeadScreenPosition.isEqual(newHeadScreenPosition) - # Supports old editor view - @needsAutoscroll ?= @isLastCursor() and !textChanged - @autoscroll() if @editor.manageScrollPosition and @isLastCursor() and textChanged + @autoscroll() if @isLastCursor() and textChanged @goalColumn = null @@ -53,7 +50,6 @@ class Cursor extends Model @emit 'destroyed' @emitter.emit 'did-destroy' @emitter.dispose() - @needsAutoscroll = true destroy: -> @marker.destroy() @@ -600,7 +596,6 @@ class Cursor extends Model setVisible: (visible) -> if @visible != visible @visible = visible - @needsAutoscroll ?= true if @visible and @isLastCursor() @emit 'visibility-changed', @visible @emitter.emit 'did-change-visibility', @visible @@ -628,7 +623,6 @@ class Cursor extends Model # Public: Prevents this cursor from causing scrolling. clearAutoscroll: -> - @needsAutoscroll = null # Public: Deselects the current selection. clearSelection: -> @@ -656,11 +650,8 @@ class Cursor extends Model changePosition: (options, fn) -> @clearSelection() - @needsAutoscroll = options.autoscroll ? @isLastCursor() fn() - if @needsAutoscroll - @emit 'autoscrolled' # Support legacy editor - @autoscroll() if @needsAutoscroll and @editor.manageScrollPosition # Support react editor view + @autoscroll() if options.autoscroll ? @isLastCursor() getPixelRect: -> @editor.pixelRectForScreenRange(@getScreenRange()) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 4ab65d0f7..059d04909 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -22,7 +22,6 @@ class DisplayBuffer extends Model Serializable.includeInto(this) @properties - manageScrollPosition: false softWrapped: null editorWidthInChars: null lineHeightInPixels: null @@ -268,10 +267,7 @@ class DisplayBuffer extends Model getScrollTop: -> @scrollTop setScrollTop: (scrollTop) -> - if @manageScrollPosition - @scrollTop = Math.round(Math.max(0, Math.min(@getMaxScrollTop(), scrollTop))) - else - @scrollTop = Math.round(scrollTop) + @scrollTop = Math.round(Math.max(0, Math.min(@getMaxScrollTop(), scrollTop))) getMaxScrollTop: -> @getScrollHeight() - @getClientHeight() @@ -283,11 +279,7 @@ class DisplayBuffer extends Model getScrollLeft: -> @scrollLeft setScrollLeft: (scrollLeft) -> - if @manageScrollPosition - @scrollLeft = Math.round(Math.max(0, Math.min(@getScrollWidth() - @getClientWidth(), scrollLeft))) - @scrollLeft - else - @scrollLeft = Math.round(scrollLeft) + @scrollLeft = Math.round(Math.max(0, Math.min(@getScrollWidth() - @getClientWidth(), scrollLeft))) getMaxScrollLeft: -> @getScrollWidth() - @getClientWidth() @@ -1113,7 +1105,7 @@ class DisplayBuffer extends Model handleTokenizedBufferChange: (tokenizedBufferChange) => {start, end, delta, bufferChange} = tokenizedBufferChange @updateScreenLines(start, end + 1, delta, delayChangeEvent: bufferChange?) - @setScrollTop(Math.min(@getScrollTop(), @getMaxScrollTop())) if @manageScrollPosition and delta < 0 + @setScrollTop(Math.min(@getScrollTop(), @getMaxScrollTop())) if delta < 0 updateScreenLines: (startBufferRow, endBufferRow, bufferDelta=0, options={}) -> startBufferRow = @rowMap.bufferRowRangeForBufferRow(startBufferRow)[0] diff --git a/src/selection.coffee b/src/selection.coffee index 375498c41..524f1bd9b 100644 --- a/src/selection.coffee +++ b/src/selection.coffee @@ -14,7 +14,6 @@ class Selection extends Model editor: null initialScreenRange: null wordwise: false - needsAutoscroll: null constructor: ({@cursor, @marker, @editor, id}) -> @emitter = new Emitter @@ -100,15 +99,13 @@ class Selection extends Model # * `autoscroll` if `true`, the {TextEditor} scrolls to the new selection. setBufferRange: (bufferRange, options={}) -> bufferRange = Range.fromObject(bufferRange) - @needsAutoscroll = options.autoscroll options.reversed ?= @isReversed() @editor.destroyFoldsContainingBufferRange(bufferRange) unless options.preserveFolds @modifySelection => needsFlash = options.flash delete options.flash if options.flash? - @cursor.needsAutoscroll = false if @needsAutoscroll? @marker.setBufferRange(bufferRange, options) - @autoscroll() if @needsAutoscroll and @editor.manageScrollPosition + @autoscroll() if options.autoscroll @decoration.flash('flash', @editor.selectionFlashDuration) if needsFlash # Public: Returns the starting and ending buffer rows the selection is @@ -359,7 +356,6 @@ class Selection extends Model @editor.unfoldBufferRow(oldBufferRange.end.row) wasReversed = @isReversed() @clear() - @cursor.needsAutoscroll = @cursor.isLastCursor() autoIndentFirstLine = false precedingText = @editor.getTextInRange([[oldBufferRange.start.row, 0], oldBufferRange.start]) @@ -758,7 +754,6 @@ class Selection extends Model @editor.scrollToScreenRange(@getScreenRange()) clearAutoscroll: -> - @needsAutoscroll = null modifySelection: (fn) -> @retainSelection = true diff --git a/src/text-editor-component.coffee b/src/text-editor-component.coffee index 75a9a5136..63a7f9a1c 100644 --- a/src/text-editor-component.coffee +++ b/src/text-editor-component.coffee @@ -39,7 +39,6 @@ class TextEditorComponent @lineOverdrawMargin = lineOverdrawMargin if lineOverdrawMargin? @disposables = new CompositeDisposable - @editor.manageScrollPosition = true @observeConfig() @setScrollSensitivity(atom.config.get('editor.scrollSensitivity')) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 6ccb97392..114df486a 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -76,7 +76,7 @@ class TextEditor extends Model @delegatesProperties '$lineHeightInPixels', '$defaultCharWidth', '$height', '$width', '$verticalScrollbarWidth', '$horizontalScrollbarHeight', '$scrollTop', '$scrollLeft', - 'manageScrollPosition', toProperty: 'displayBuffer' + toProperty: 'displayBuffer' constructor: ({@softTabs, initialLine, initialColumn, tabLength, softWrapped, @displayBuffer, buffer, registerEditor, suppressCursorCreation, @mini, @placeholderText, @gutterVisible}) -> super @@ -1132,12 +1132,10 @@ class TextEditor extends Model # Essential: Undo the last change. undo: -> - @getLastCursor().needsAutoscroll = true @buffer.undo(this) # Essential: Redo the last change. redo: -> - @getLastCursor().needsAutoscroll = true @buffer.redo(this) # Extended: Batch multiple operations as a single undo/redo step. @@ -1950,7 +1948,7 @@ class TextEditor extends Model addSelectionForBufferRange: (bufferRange, options={}) -> @markBufferRange(bufferRange, _.defaults(@getSelectionMarkerAttributes(), options)) selection = @getLastSelection() - selection.autoscroll() if @manageScrollPosition + selection.autoscroll() selection # Essential: Add a selection for the given range in screen coordinates. @@ -1964,7 +1962,7 @@ class TextEditor extends Model addSelectionForScreenRange: (screenRange, options={}) -> @markScreenRange(screenRange, _.defaults(@getSelectionMarkerAttributes(), options)) selection = @getLastSelection() - selection.autoscroll() if @manageScrollPosition + selection.autoscroll() selection # Essential: Select from the current cursor position to the given position in