 Editor::getCursor = ->
   cursor = @tree.getFromLocation(@cursor)
 
-  # If the cursor is incorrect (usually because something moved), find recover it
-  until (not cursor?) or @validCursorPosition(cursor)
-    cursor = cursor.next
-  if not cursor?
-    cursor = @tree.getFromLocation(@cursor)
-    until @validCursorPosition(cursor)
-      cursor = cursor.prev
-
   if cursor.type is 'socketStart'
     return cursor.container
   else

    @redrawHighlights()

Editor::performFloatingOperation = (op, direction) ->
  console.log 'performing floating operation'
  if (op.type is 'create') is (direction is 'forward')
    @floatingBlocks.push new FloatingBlockRecord(
      op.block.clone()
      op.position
    )
  else
    @floatingBlocks = @floatingBlocks.filter (record) ->
      not (record.block.stringify() is op.block.stringify() and
           record.position.equals(op.position))

class FloatingOperation
  constructor: (@block, @position, @type) ->

# On mousedown, we can hit test for floating blocks.
hook 'mousedown', 5, (point, event, state) ->


    # Add the undo operation associated
    # with creating this floating block
    @pushUndo new FloatingOperation @floatingBlocks.length, @draggingBlock, renderPoint, 'create'

    # Add this block to our list of floating blocks
    @floatingBlocks.push new FloatingBlockRecord(
