diff --git a/spec/text-editor-presenter-spec.coffee b/spec/text-editor-presenter-spec.coffee index 5ef824e81..5fb4e2f84 100644 --- a/spec/text-editor-presenter-spec.coffee +++ b/spec/text-editor-presenter-spec.coffee @@ -263,7 +263,7 @@ describe "TextEditorPresenter", -> expect(presenter.state.verticalScrollbar.scrollHeight).toBe presenter.computeContentHeight() expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", true) - expect(presenter.state.verticalScrollbar.scrollHeight).toBe presenter.computeContentHeight() + presenter.computeClientHeight() + expect(presenter.state.verticalScrollbar.scrollHeight).toBe presenter.computeContentHeight() + presenter.computeClientHeight() - (presenter.lineHeight * 3) expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", false) expect(presenter.state.verticalScrollbar.scrollHeight).toBe presenter.computeContentHeight() @@ -306,7 +306,7 @@ describe "TextEditorPresenter", -> atom.config.set("editor.scrollPastEnd", true) expectStateUpdate presenter, -> presenter.setScrollTop(300) - expect(presenter.state.verticalScrollbar.scrollTop).toBe presenter.computeContentHeight() + expect(presenter.state.verticalScrollbar.scrollTop).toBe presenter.computeContentHeight() - (presenter.lineHeight * 3) expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", false) expect(presenter.state.verticalScrollbar.scrollTop).toBe presenter.computeContentHeight() - presenter.computeClientHeight() @@ -355,7 +355,7 @@ describe "TextEditorPresenter", -> expect(presenter.state.content.scrollHeight).toBe presenter.computeContentHeight() expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", true) - expect(presenter.state.content.scrollHeight).toBe presenter.computeContentHeight() + presenter.computeClientHeight() + expect(presenter.state.content.scrollHeight).toBe presenter.computeContentHeight() + presenter.computeClientHeight() - (presenter.lineHeight * 3) expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", false) expect(presenter.state.content.scrollHeight).toBe presenter.computeContentHeight() @@ -453,7 +453,7 @@ describe "TextEditorPresenter", -> atom.config.set("editor.scrollPastEnd", true) expectStateUpdate presenter, -> presenter.setScrollTop(300) - expect(presenter.state.content.scrollTop).toBe presenter.computeContentHeight() + expect(presenter.state.content.scrollTop).toBe presenter.computeContentHeight() - (presenter.lineHeight * 3) expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", false) expect(presenter.state.content.scrollTop).toBe presenter.computeContentHeight() - presenter.computeClientHeight() @@ -1524,7 +1524,7 @@ describe "TextEditorPresenter", -> expect(presenter.state.gutter.scrollHeight).toBe presenter.computeContentHeight() expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", true) - expect(presenter.state.gutter.scrollHeight).toBe presenter.computeContentHeight() + presenter.computeClientHeight() + expect(presenter.state.gutter.scrollHeight).toBe presenter.computeContentHeight() + presenter.computeClientHeight() - (presenter.lineHeight * 3) expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", false) expect(presenter.state.gutter.scrollHeight).toBe presenter.computeContentHeight() @@ -1567,7 +1567,7 @@ describe "TextEditorPresenter", -> atom.config.set("editor.scrollPastEnd", true) expectStateUpdate presenter, -> presenter.setScrollTop(300) - expect(presenter.state.gutter.scrollTop).toBe presenter.computeContentHeight() + expect(presenter.state.gutter.scrollTop).toBe presenter.computeContentHeight() - (presenter.lineHeight * 3) expectStateUpdate presenter, -> atom.config.set("editor.scrollPastEnd", false) expect(presenter.state.gutter.scrollTop).toBe presenter.computeContentHeight() - presenter.computeClientHeight() @@ -1735,12 +1735,6 @@ describe "TextEditorPresenter", -> expectValues lineNumberStateForScreenRow(presenter, 6), {screenRow: 6, bufferRow: 3, softWrapped: true} expectValues lineNumberStateForScreenRow(presenter, 7), {screenRow: 7, bufferRow: 4, softWrapped: false} - it "renders no line numbers if scrolled past the end", -> - atom.config.set('editor.scrollPastEnd', true) - presenter = buildPresenter(explicitHeight: 50, lineHeight: 10, lineOverdrawMargin: 0) - presenter.setScrollTop(300) - expect(presenter.state.gutter.lineNumbers).toEqual {} - describe ".decorationClasses", -> it "adds decoration classes to the relevant line number state objects, both initially and when decorations change", -> marker1 = editor.markBufferRange([[4, 0], [6, 2]], invalidate: 'touch') diff --git a/src/text-editor-presenter.coffee b/src/text-editor-presenter.coffee index 710f2aed8..d80e5d608 100644 --- a/src/text-editor-presenter.coffee +++ b/src/text-editor-presenter.coffee @@ -348,7 +348,9 @@ class TextEditorPresenter computeScrollHeight: -> contentHeight = @computeContentHeight() - contentHeight += @computeClientHeight() if atom.config.get('editor.scrollPastEnd') + if atom.config.get('editor.scrollPastEnd') + extraScrollHeight = @computeClientHeight() - (@lineHeight * 3) + contentHeight += extraScrollHeight if extraScrollHeight > 0 Math.max(contentHeight, @computeHeight()) computeContentWidth: ->