     state
     (finalize-layer state)))
 
+(defmethod control-event :mouse-depressed
+  [target message [x y button] state]
+  (update-mouse state x y))
+
 (defmethod post-control-event! :mouse-depressed
   [target message [x y button] previous-state current-state]
   (let [cast! (fn [msg & [payload]]

    (let [r (if (get-in state [:drawing :in-progress?])
              (let [points ((fnil conj []) (get-in state [:drawing :points]) {:x x :y x :rx rx :ry ry})]
                (-> state
                    (update-in [:mouse] assoc :x x :y y :rx rx :ry ry)
                    (assoc-in [:drawing :points] points)
                    (update-in [:drawing :layer] assoc
                               :layer/current-x snap-x

        (update-in [:drawing] assoc :in-progress? false)
        (assoc-in [:drawing :points] [])
        (assoc-in [:mouse :down] false)
        (update-mouse x y)
        ;; TODO: get rid of nils (datomic doesn't like them)
        (update-in [:drawing :layer]
                   (fn [layer]
