 (defn add-control-mouse-listener
   "Adds a mouse-listener proxy to the given control."
   [control proxy]
-  (.addMouseListener (get-control control) proxy))
+  (.addMouseListener (get-control control) proxy)
+  (.addMouseMotionListener (get-control control) proxy))
 
 
 ;;; Button

                                (if (not= start-col end-col)
                                  (move-column widget start-col end-col))
                                (if (not= start-row end-row)
                                  (move-row widget start-row end-row)))
                              (dosync (ref-set drag-start nil)))),
         drag-motion-event (fn [x]
                             (message-box "X")
                             (if (and (= (:button x) 1)
                                   (= (:modifiers x) #{:alt})
                                   (not= (deref drag-start) nil))
                               (let [ cell (get-view-coordinates-at-point 
                                             widget (:position x))
                                      row (first cell)
                                      column (second cell) ]
                                 (select-single-cell widget row column))
                               (message-box "DRAG")
                               )),


        cell-permutor (proxy-mouse-listener button-down-event

                           :modifiers (translate-modifier (.getModifiersEx event))
                           :position [(.getX event) (.getY event)]
                           :buttons-down (translate-pressed-btns (.getModifiersEx event))})]
    (proxy [MouseInputAdapter] []
      (mousePressed [event]
        (with-swing-threads* (pressed (translate-event event))))
      (mouseReleased [event]
