From 75eb7c9c665f56a1ef470a887de7d9dd2ad0d524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Mon, 19 Dec 2016 17:15:52 +0100 Subject: [PATCH] Improved the wheel zoom --- frontend/src/uxbox/main/ui/workspace.cljs | 25 +++++++++++++------ .../main/ui/workspace/sidebar/options.cljs | 2 +- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/frontend/src/uxbox/main/ui/workspace.cljs b/frontend/src/uxbox/main/ui/workspace.cljs index 73b280e02..0e410f938 100644 --- a/frontend/src/uxbox/main/ui/workspace.cljs +++ b/frontend/src/uxbox/main/ui/workspace.cljs @@ -87,15 +87,24 @@ (defn- on-wheel [own event] (when (kbd/ctrl? event) - (dom/prevent-default event) - (dom/stop-propagation event) - (if (pos? (.-deltaY event)) - (st/emit! (dw/increase-zoom)) - (st/emit! (dw/decrease-zoom))) + (let [prev-zoom @wb/zoom-ref] + (dom/prevent-default event) + (dom/stop-propagation event) + (if (pos? (.-deltaY event)) + (st/emit! (dw/increase-zoom)) + (st/emit! (dw/decrease-zoom))) - (let [dom (mx/ref-node own "workspace-canvas")] - (set! (.-scrollLeft dom) (* c/canvas-start-scroll-x @wb/zoom-ref)) - (set! (.-scrollTop dom) (* c/canvas-start-scroll-y @wb/zoom-ref))))) + (let [ + dom (mx/ref-node own "workspace-canvas") + 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 [own] diff --git a/frontend/src/uxbox/main/ui/workspace/sidebar/options.cljs b/frontend/src/uxbox/main/ui/workspace/sidebar/options.cljs index 4506b2d00..bf5507f8f 100644 --- a/frontend/src/uxbox/main/ui/workspace/sidebar/options.cljs +++ b/frontend/src/uxbox/main/ui/workspace/sidebar/options.cljs @@ -94,7 +94,7 @@ [old-own own] (let [[prev-shape] (:rum/args old-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) {})) own))