   getState: ->
     @updating = true
 
-    @updateVerticalDimensions()
-    @updateScrollbarDimensions()
-    @updateStartRow()
-    @updateEndRow()
+    @linesYardstick.prepareScreenRowsForMeasurement([
+      @model.getLongestScreenRow()
+    ])
+    @deleteTemporaryTiles()
+
     @updateCommonGutterState()
     @updateHorizontalDimensions()
     @updateReflowState()

    [startRow...endRow]

  updateVisibleTilesState: ->
    return unless @startRow? and @endRow? and @lineHeight?

    @updateTilesState(@getVisibleRows())

  updateTilesState: (screenRows) ->
    screenRows.sort (a, b) -> a - b

    visibleTiles = {}

      tile.display = "block"
      tile.zIndex = zIndex
      tile.highlights ?= {}
      tile.temporary = temporary

      gutterTile = @lineNumberGutter.tiles[tileStartRow] ?= {}
      gutterTile.top = tileStartRow * @lineHeight - @scrollTop
      gutterTile.height = @tileSize * @lineHeight
      gutterTile.display = "block"
      gutterTile.zIndex = zIndex
      gutterTile.temporary = temporary

      @updateLinesState(tile, rowsWithinTile) if @shouldUpdateLinesState
      @updateLineNumbersState(gutterTile, rowsWithinTile) if @shouldUpdateLineNumbersState

      visibleTiles[tileStartRow] = true
      zIndex++

    return if temporary

    if @mouseWheelScreenRow? and @model.tokenizedLineForScreenRow(@mouseWheelScreenRow)?
      mouseWheelTile = @tileForRow(@mouseWheelScreenRow)
