From 03507f7be386a80d443effcfa0dede80abc4bc10 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 18 Sep 2015 12:24:53 +0200 Subject: [PATCH] Revert previous commit --- spec/text-editor-presenter-spec.coffee | 19 ++++++++++++++----- src/text-editor-presenter.coffee | 6 ++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/spec/text-editor-presenter-spec.coffee b/spec/text-editor-presenter-spec.coffee index b72d64986..35ce570ae 100644 --- a/spec/text-editor-presenter-spec.coffee +++ b/spec/text-editor-presenter-spec.coffee @@ -93,7 +93,11 @@ describe "TextEditorPresenter", -> expectValues stateFn(presenter).tiles[8], { top: 5 } - expect(stateFn(presenter).tiles[10]).toBeUndefined() + expectValues stateFn(presenter).tiles[10], { + top: 7 + } + + expect(stateFn(presenter).tiles[12]).toBeUndefined() it "includes state for all tiles if no external ::explicitHeight is assigned", -> presenter = buildPresenter(explicitHeight: null, tileSize: 2) @@ -162,7 +166,8 @@ describe "TextEditorPresenter", -> expect(stateFn(presenter).tiles[0]).toBeDefined() expect(stateFn(presenter).tiles[2]).toBeDefined() - expect(stateFn(presenter).tiles[4]).toBeUndefined() + expect(stateFn(presenter).tiles[4]).toBeDefined() + expect(stateFn(presenter).tiles[6]).toBeUndefined() it "does not remove out-of-view tiles corresponding to ::mouseWheelScreenRow until ::stoppedScrollingDelay elapses", -> presenter = buildPresenter(explicitHeight: 6, scrollTop: 0, lineHeight: 1, tileSize: 2, stoppedScrollingDelay: 200) @@ -1431,7 +1436,7 @@ describe "TextEditorPresenter", -> presenter.setBaseCharacterWidth(8) assignedAnyHighlight = false for tileId, tileState of presenter.getState().content.tiles - assignedAnyHighlight ||= not _.isEqual(tileState.highlights, {}) + assignedAnyHighlight ||= _.isEqual(tileState.highlights, {}) expect(assignedAnyHighlight).toBe(true) @@ -2060,7 +2065,9 @@ describe "TextEditorPresenter", -> expectValues lineNumberStateForScreenRow(presenter, 5), {bufferRow: 4} expectValues lineNumberStateForScreenRow(presenter, 6), {bufferRow: 7} expectValues lineNumberStateForScreenRow(presenter, 7), {bufferRow: 8} - expect(lineNumberStateForScreenRow(presenter, 8)).toBeUndefined() + expectValues lineNumberStateForScreenRow(presenter, 8), {bufferRow: 8} + expectValues lineNumberStateForScreenRow(presenter, 9), {bufferRow: 9} + expect(lineNumberStateForScreenRow(presenter, 10)).toBeUndefined() expectStateUpdate presenter, -> editor.getBuffer().insert([3, Infinity], new Array(25).join("x ")) @@ -2072,7 +2079,9 @@ describe "TextEditorPresenter", -> expectValues lineNumberStateForScreenRow(presenter, 5), {bufferRow: 3} expectValues lineNumberStateForScreenRow(presenter, 6), {bufferRow: 4} expectValues lineNumberStateForScreenRow(presenter, 7), {bufferRow: 7} - expect(lineNumberStateForScreenRow(presenter, 8)).toBeUndefined() + expectValues lineNumberStateForScreenRow(presenter, 8), {bufferRow: 8} + expectValues lineNumberStateForScreenRow(presenter, 9), {bufferRow: 8} + expect(lineNumberStateForScreenRow(presenter, 10)).toBeUndefined() it "correctly handles the first screen line being soft-wrapped", -> editor.setSoftWrapped(true) diff --git a/src/text-editor-presenter.coffee b/src/text-editor-presenter.coffee index e8c99ca25..ec239ef46 100644 --- a/src/text-editor-presenter.coffee +++ b/src/text-editor-presenter.coffee @@ -343,7 +343,9 @@ class TextEditorPresenter updateVisibleTilesState: -> return unless @startRow? and @endRow? and @lineHeight? - @updateTilesState([@startRow...@endRow]) + startRow = @getStartTileRow() + endRow = Math.min(@model.getScreenLineCount(), @getEndTileRow() + @tileSize) + @updateTilesState([startRow...endRow]) updateTilesState: (screenRows) -> visibleTiles = {} @@ -360,7 +362,7 @@ class TextEditorPresenter while screenRowIndex >= 0 currentScreenRow = screenRows[screenRowIndex] break if currentScreenRow < tileStartRow - rowsWithinTile.unshift(currentScreenRow) + rowsWithinTile.push(currentScreenRow) screenRowIndex-- continue if rowsWithinTile.length is 0