Improved the wheel zoom

This commit is contained in:
Jesús Espino 2016-12-19 17:15:52 +01:00
parent 99fb0ad29b
commit 75eb7c9c66
2 changed files with 18 additions and 9 deletions

View file

@ -87,15 +87,24 @@
(defn- on-wheel (defn- on-wheel
[own event] [own event]
(when (kbd/ctrl? event) (when (kbd/ctrl? event)
(dom/prevent-default event) (let [prev-zoom @wb/zoom-ref]
(dom/stop-propagation event) (dom/prevent-default event)
(if (pos? (.-deltaY event)) (dom/stop-propagation event)
(st/emit! (dw/increase-zoom)) (if (pos? (.-deltaY event))
(st/emit! (dw/decrease-zoom))) (st/emit! (dw/increase-zoom))
(st/emit! (dw/decrease-zoom)))
(let [dom (mx/ref-node own "workspace-canvas")] (let [
(set! (.-scrollLeft dom) (* c/canvas-start-scroll-x @wb/zoom-ref)) dom (mx/ref-node own "workspace-canvas")
(set! (.-scrollTop dom) (* c/canvas-start-scroll-y @wb/zoom-ref))))) scroll-position (gpt/divide @wb/scroll-a prev-zoom)
mouse-position (gpt/divide @wb/mouse-viewport-a prev-zoom)
viewport-offset-x (* (- (:x mouse-position) (:x scroll-position)) prev-zoom)
viewport-offset-y (* (- (:y mouse-position) (:y scroll-position)) prev-zoom)
new-scroll-position-x (- (* (:x mouse-position) @wb/zoom-ref) viewport-offset-x)
new-scroll-position-y (- (* (:y mouse-position) @wb/zoom-ref) viewport-offset-y)
]
(set! (.-scrollLeft dom) new-scroll-position-x )
(set! (.-scrollTop dom) new-scroll-position-y)))))
(defn- workspace-render (defn- workspace-render
[own] [own]

View file

@ -94,7 +94,7 @@
[old-own own] [old-own own]
(let [[prev-shape] (:rum/args old-own) (let [[prev-shape] (:rum/args old-own)
[curr-shape] (:rum/args own)] [curr-shape] (:rum/args own)]
(when (not (identical? prev-shape curr-shape)) (when-not (= (:id prev-shape) (:id curr-shape))
(reset! (:rum/local own) {})) (reset! (:rum/local own) {}))
own)) own))