🐛 Compute content width when the longest row is the first one

This commit is contained in:
Antonio Scandurra 2015-11-19 16:38:19 -08:00 committed by Nathan Sobo
parent e5165814e6
commit cbfee4e809
2 changed files with 16 additions and 1 deletions

View File

@ -680,6 +680,20 @@ describe "TextEditorPresenter", ->
presenter = buildPresenter(explicitHeight: 100, contentFrameWidth: 10 * maxLineLength + 20, baseCharacterWidth: 10, verticalScrollbarWidth: 10)
expect(presenter.getState().content.scrollWidth).toBe 10 * maxLineLength + 20 - 10 # subtract vertical scrollbar width
describe "when the longest screen row is the first one and it's hidden", ->
it "doesn't compute an invalid value (regression)", ->
presenter = buildPresenter(tileSize: 2, contentFrameWidth: 10, explicitHeight: 20)
editor.setText """
a very long long long long long long line
b
c
d
e
"""
expectStateUpdate presenter, -> presenter.setScrollTop(40)
expect(presenter.getState().content.scrollWidth).toBe 10 * editor.getMaxScreenLineLength() + 1
it "updates when the ::contentFrameWidth changes", ->
maxLineLength = editor.getMaxScreenLineLength()
presenter = buildPresenter(contentFrameWidth: 50, baseCharacterWidth: 10)

View File

@ -380,7 +380,8 @@ class TextEditorPresenter
endRow = @constrainRow(@getEndTileRow() + @tileSize)
screenRows = [startRow...endRow]
if longestScreenRow = @model.getLongestScreenRow()
longestScreenRow = @model.getLongestScreenRow()
if longestScreenRow?
screenRows.push(longestScreenRow)
if @screenRowsToMeasure?
screenRows.push(@screenRowsToMeasure...)