       @position.row = newRow
 
     @position.column = newColumn
-    @cursorMoved()
+    @cursorMoved(oldPosition)
 
   moveToTop: ->
     @moveUp(@position.row)

  getValue: -> @tableEditor.getValueAtScreenPosition(@getPosition())

  setPosition: (position, resetSelection=true) ->
    @position = Point.fromObject(position)
    @cursorMoved(resetSelection)

  getRange: ->
    new Range(@position, {

    })

  moveUp: (delta=1) ->
    oldPosition = @position.copy()
    newRow = @position.row - delta
    newRow = @tableEditor.getScreenRowCount() - 1 if newRow < 0

    @position.row = newRow
    @cursorMoved(oldPosition)

  moveDown: (delta=1) ->
    oldPosition = @position.copy()
    newRow = @position.row + delta
    newRow = 0 if newRow >= @tableEditor.getScreenRowCount()

    @position.row = newRow
    @cursorMoved(oldPosition)

  moveLeft: (delta=1) ->
    oldPosition = @position.copy()
    newColumn = @position.column - delta

    if newColumn < 0
