From d558b3e6f4c443ca2c2f6450048fcf8ac0ed5217 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 5 Apr 2016 21:06:34 +0300 Subject: [PATCH] Handle properly zoom. --- src/uxbox/ui/workspace.cljs | 15 ++++++++++++--- src/uxbox/ui/workspace/canvas.cljs | 6 +++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/uxbox/ui/workspace.cljs b/src/uxbox/ui/workspace.cljs index 74426a466d..98401e8240 100644 --- a/src/uxbox/ui/workspace.cljs +++ b/src/uxbox/ui/workspace.cljs @@ -87,14 +87,23 @@ left (.-scrollLeft target)] (rx/push! uuwb/scroll-b (gpt/point left top)))) + +(def ^:const ^:private zoom-l + (-> (l/in [:workspace :zoom]) + (l/focus-atom st/state))) + (defn- on-wheel - [event] + [own event] (when (kbd/ctrl? event) (dom/prevent-default event) (dom/stop-propagation event) (if (pos? (.-deltaY event)) (rs/emit! (dw/increase-zoom)) - (rs/emit! (dw/decrease-zoom))))) + (rs/emit! (dw/decrease-zoom))) + + (let [dom (mx/get-ref-dom own "workspace-canvas")] + (set! (.-scrollLeft dom) (* uuwb/canvas-start-scroll-x (or @zoom-l 1))) + (set! (.-scrollTop dom) (* uuwb/canvas-start-scroll-y (or @zoom-l 1)))))) (defn- workspace-render [own projectid] @@ -119,7 +128,7 @@ [:section.workspace-content {:class classes :on-scroll on-scroll - :on-wheel on-wheel} + :on-wheel (partial on-wheel own)} ;; Rules (horizontal-rule zoom) diff --git a/src/uxbox/ui/workspace/canvas.cljs b/src/uxbox/ui/workspace/canvas.cljs index 5e869f9448..ce5b161768 100644 --- a/src/uxbox/ui/workspace/canvas.cljs +++ b/src/uxbox/ui/workspace/canvas.cljs @@ -88,7 +88,7 @@ (let [workspace (rum/react uuwb/workspace-l) page (rum/react uuwb/page-l) drawing? (:drawing workspace) - zoom (:zoom workspace 1)] + zoom (or (:zoom workspace) 1)] (letfn [(on-mouse-down [event] (dom/stop-propagation event) (when-not (empty? (:selected workspace)) @@ -101,8 +101,8 @@ (uuc/release-action! "ui.shape" "ui.selrect"))] (html - [:svg.viewport {:width uuwb/viewport-width - :height uuwb/viewport-height + [:svg.viewport {:width (* uuwb/viewport-width zoom) + :height (* uuwb/viewport-height zoom) :ref "viewport" :class (when drawing? "drawing") :on-mouse-down on-mouse-down