mirror of
https://github.com/atom/atom.git
synced 2026-01-29 00:38:11 -05:00
Differentiate between gutter and lines tiles
...and fix specs as well. 💚
This commit is contained in:
@@ -219,7 +219,7 @@ describe "TextEditorComponent", ->
|
||||
expectTileContainsRow(tilesNodes[2], 7, top: 1 * lineHeightInPixels)
|
||||
expectTileContainsRow(tilesNodes[2], 8, top: 2 * lineHeightInPixels)
|
||||
|
||||
fffit "renders the longest screen row even when it's not visible", ->
|
||||
it "renders the longest screen row even when it's not visible", ->
|
||||
wrapperNode.style.height = 2 * lineHeightInPixels + 'px'
|
||||
component.measureDimensions()
|
||||
nextAnimationFrame()
|
||||
|
||||
@@ -154,20 +154,23 @@ describe "TextEditorPresenter", ->
|
||||
expect(stateFn(presenter).tiles[10]).toBeUndefined()
|
||||
|
||||
it "updates when ::lineHeight changes", ->
|
||||
presenter = buildPresenter(explicitHeight: 6, scrollTop: 0, lineHeight: 1, tileSize: 2)
|
||||
presenter = buildPresenter(explicitHeight: 10, scrollTop: 0, lineHeight: 1, tileSize: 2)
|
||||
|
||||
expect(stateFn(presenter).tiles[0]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[2]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[4]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[6]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[8]).toBeUndefined()
|
||||
expect(stateFn(presenter).tiles[8]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[10]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[12]).toBeUndefined()
|
||||
|
||||
expectStateUpdate presenter, -> presenter.setLineHeight(2)
|
||||
|
||||
expect(stateFn(presenter).tiles[0]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[2]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[4]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[6]).toBeUndefined()
|
||||
expect(stateFn(presenter).tiles[6]).toBeDefined()
|
||||
expect(stateFn(presenter).tiles[8]).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)
|
||||
|
||||
@@ -354,7 +354,8 @@ class TextEditorPresenter
|
||||
@updateLinesState(tile, startRow, endRow) if @shouldUpdateLinesState
|
||||
@updateLineNumbersState(gutterTile, startRow, endRow) if @shouldUpdateLineNumbersState
|
||||
|
||||
@visibleTiles[startRow] = true
|
||||
@visibleLinesTiles[startRow] = true
|
||||
@visibleGutterTiles[startRow] = true
|
||||
zIndex--
|
||||
|
||||
updateMouseWheelTileState: ->
|
||||
@@ -362,10 +363,11 @@ class TextEditorPresenter
|
||||
|
||||
mouseWheelTile = @tileForRow(@mouseWheelScreenRow)
|
||||
|
||||
unless @visibleTiles[mouseWheelTile]?
|
||||
unless @visibleGutterTiles[mouseWheelTile]? and @visibleLinesTiles[mouseWheelTile]
|
||||
@lineNumberGutter.tiles[mouseWheelTile].display = "none"
|
||||
@state.content.tiles[mouseWheelTile].display = "none"
|
||||
@visibleTiles[mouseWheelTile] = true
|
||||
@visibleGutterTiles[mouseWheelTile] = true
|
||||
@visibleLinesTiles[mouseWheelTile] = true
|
||||
|
||||
updateLongestTileState: ->
|
||||
longestScreenRow = @model.getLongestScreenRow()
|
||||
@@ -375,22 +377,22 @@ class TextEditorPresenter
|
||||
|
||||
tile = @state.content.tiles[longestScreenRowTile] ?= {}
|
||||
tile.visibility = "hidden"
|
||||
tile.highlights = {}
|
||||
|
||||
@updateLinesState(tile, longestScreenRow, longestScreenRow + 1)
|
||||
|
||||
@visibleTiles[longestScreenRowTile] = true
|
||||
@visibleLinesTiles[longestScreenRowTile] = true
|
||||
|
||||
deleteHiddenTilesState: ->
|
||||
for id, tile of @state.content.tiles
|
||||
continue if @visibleTiles.hasOwnProperty(id)
|
||||
|
||||
delete @state.content.tiles[id]
|
||||
delete @lineNumberGutter.tiles[id]
|
||||
delete @state.content.tiles[id] unless @visibleLinesTiles[id]
|
||||
delete @lineNumberGutter.tiles[id] unless @visibleGutterTiles[id]
|
||||
|
||||
updateTilesState: ->
|
||||
return unless @startRow? and @endRow? and @lineHeight?
|
||||
|
||||
@visibleTiles = {}
|
||||
@visibleGutterTiles = {}
|
||||
@visibleLinesTiles = {}
|
||||
|
||||
@updateVisibleTilesState()
|
||||
@updateLongestTileState()
|
||||
|
||||
Reference in New Issue
Block a user