diff --git a/spec/text-editor-presenter-spec.coffee b/spec/text-editor-presenter-spec.coffee index 34d1e1347..730829f58 100644 --- a/spec/text-editor-presenter-spec.coffee +++ b/spec/text-editor-presenter-spec.coffee @@ -93,6 +93,11 @@ describe "TextEditorPresenter", -> expect(presenter.state.lines[editor.tokenizedLineForScreenRow(9).id]).toBeDefined() expect(presenter.state.lines[editor.tokenizedLineForScreenRow(10).id]).toBeUndefined() + it "reports all lines as visible if no external ::clientHeight is assigned", -> + presenter = new TextEditorPresenter(model: editor, scrollTop: 0, lineHeight: 10, lineOverdrawMargin: 1) + expect(presenter.state.lines[editor.tokenizedLineForScreenRow(0).id]).toBeDefined() + expect(presenter.state.lines[editor.tokenizedLineForScreenRow(12).id]).toBeDefined() + it "uses the computed scrollWidth as the length of each line", -> line0 = editor.tokenizedLineForScreenRow(0) line1 = editor.tokenizedLineForScreenRow(1) diff --git a/src/text-editor-presenter.coffee b/src/text-editor-presenter.coffee index 19341c1e6..e8f8093b4 100644 --- a/src/text-editor-presenter.coffee +++ b/src/text-editor-presenter.coffee @@ -58,7 +58,7 @@ class TextEditorPresenter getEndRow: -> startRow = @getStartRow() - visibleLinesCount = Math.ceil(@clientHeight / @lineHeight) + 1 + visibleLinesCount = Math.ceil(@getClientHeight() / @lineHeight) + 1 overdrawMargin = @lineOverdrawMargin + Math.min(@lineOverdrawMargin, startRow) endRow = startRow + visibleLinesCount + overdrawMargin Math.min(@model.getScreenLineCount(), endRow) @@ -74,6 +74,9 @@ class TextEditorPresenter setClientHeight: (@clientHeight) -> @updateLinesState() + getClientHeight: -> + @clientHeight ? @model.getScreenLineCount() * @lineHeight + setClientWidth: (@clientWidth) -> @updateLinesState()