 
     for dropletDocument in @getDocuments()
       head = dropletDocument.start
+
+      # Don't allow dropping at the start of the document
+      # if we are already dragging a block that is at
+      # the start of the document.
+      if @draggingBlock.start.prev is head
+        head = head.next
+
       until head is dropletDocument.end
-
         if head is @draggingBlock.start
           head = @draggingBlock.end
 


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

# On redraw, we draw all the floating blocks
# in their proper positions.

      Math.abs(@lassoSelectAnchor.y - mainPoint.y)
    )

    findLassoSelect = (dropletDocument) =>
      first = dropletDocument.start
      until (not first?) or first.type is 'blockStart' and @view.getViewNodeFor(first.container).path.intersects lassoRectangle
        first = first.next

      last = dropletDocument.end
      until (not last?) or last.type is 'blockEnd' and @view.getViewNodeFor(last.container).path.intersects lassoRectangle
        last = last.prev

      @clearLassoSelectCanvas(); @clearHighlightCanvas()

      @lassoSelectCtx.strokeStyle = '#00f'
      @lassoSelectCtx.strokeRect lassoRectangle.x - @scrollOffsets.main.x,
        lassoRectangle.y - @scrollOffsets.main.y,
        lassoRectangle.width,
        lassoRectangle.height

      if first and last?
        [first, last] = validateLassoSelection dropletDocument, first, last
        @lassoSelection = new model.List first, last
        @redrawLassoHighlight()
        return true
      else
        @lassoSelection = null
        return false

    unless @lassoSelectionDocument? and findLassoSelect @lassoSelectionDocument
      for dropletDocument in @getDocuments()
        if findLassoSelect dropletDocument
          @lassoSelectionDocument = dropletDocument
          break

Editor::redrawLassoHighlight = ->
  if @lassoSelection?
