     @updateScroll()
     @updateSelection()
 
+    endUpdate = =>
+      @firstRenderedRow = firstRow
+      @lastRenderedRow = lastRow
+      @firstRenderedColumn = firstColumn
+      @lastRenderedColumn = lastColumn
+      @hasChanged = false
+      @dirtyPositions = null
+      @dirtyColumns = null
+      @wholeTableIsDirty = false
+
     # We never rendered anything
     unless @firstRenderedRow?
       for column in visibleColumns


      @appendGutterCell(row) for row in visibleRows

    # Whole table redraw, when the table suddenly jump from one edge to the
    # other and the old and new visible range doesn't intersect.
    else if lastRow < @firstRenderedRow or firstRow >= @lastRenderedRow or lastColumn < @firstRenderedColumn or firstColumn >= @lastRenderedColumn

            index: column
          })

    endUpdate()

  updateWidthAndHeight: ->
    @tableCells.style.cssText = """
