0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-04-16 08:51:32 -05:00

Handle properly zoom.

This commit is contained in:
Andrey Antukh 2016-04-05 21:06:34 +03:00
parent 444018d105
commit d558b3e6f4
2 changed files with 15 additions and 6 deletions

View file

@ -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)

View file

@ -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