       # Clean up
       @cleanUp()
 
-    handleDocumentMouseMove: (e) =>
-      # Trigger the start event, once
-      @handleDragStart(e) unless @dragStarted
-
-      # Trigger the drag event
-      @handleDrag(e)
+    handleElementClick: (e) =>
+      # Clicks should be cancelled if the last mousedown/mouseup interaction resulted in a drag
+      if @shouldCancelClick
+        # Cancel the click
+        e.stopImmediatePropagation()
+        false
 
     #
     # Draggable events

      # Stop the mousedown event
      false

    handleElementClick: (e) =>
      # Clicks should be cancelled if the last mousedown/mouseup interaction resulted in a drag
      if @shouldCancelClick
        # Cancel the click
        e.stopImmediatePropagation()
        false

    handleDocumentMouseUp: (e) =>
      # Stop listening for mouse events on the document

      # Mark the drag as having started
      @dragStarted = true

    handleDrag: (e) ->
      @scheduleDrag =>
        # Call any user-supplied drag callback
