From 0d9695de1d4418685b4b68db68f26086ca04713b Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Fri, 10 Mar 2023 15:28:35 +0100 Subject: [PATCH] :bug: Fix shortcuts for zoom now take into account the mouse position --- CHANGES.md | 1 + .../app/main/data/workspace/shortcuts.cljs | 4 +-- .../src/app/main/data/workspace/zoom.cljs | 30 +++++++++++-------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 1a970b0f6..d37e992b5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -28,6 +28,7 @@ - Fix problem with text editor in Safari - Fix unlink library color when blur color picker input [#3026](https://github.com/penpot/penpot/issues/3026) - Fix snap pixel when moving path points on high zoom [#2930](https://github.com/penpot/penpot/issues/2930) +- Fix shortcuts for zoom now take into account the mouse position [#2924](https://github.com/penpot/penpot/issues/2924) ### :arrow_up: Deps updates diff --git a/frontend/src/app/main/data/workspace/shortcuts.cljs b/frontend/src/app/main/data/workspace/shortcuts.cljs index cef4b74a1..6db639cbe 100644 --- a/frontend/src/app/main/data/workspace/shortcuts.cljs +++ b/frontend/src/app/main/data/workspace/shortcuts.cljs @@ -440,12 +440,12 @@ :increase-zoom {:tooltip "+" :command ["+" "="] :subsections [:zoom-workspace] - :fn #(st/emit! (dw/increase-zoom nil))} + :fn #(st/emit! (dw/increase-zoom))} :decrease-zoom {:tooltip "-" :command ["-" "_"] :subsections [:zoom-workspace] - :fn #(st/emit! (dw/decrease-zoom nil))} + :fn #(st/emit! (dw/decrease-zoom))} :reset-zoom {:tooltip (ds/shift "0") :command "shift+0" diff --git a/frontend/src/app/main/data/workspace/zoom.cljs b/frontend/src/app/main/data/workspace/zoom.cljs index 97b360472..8a8d64c41 100644 --- a/frontend/src/app/main/data/workspace/zoom.cljs +++ b/frontend/src/app/main/data/workspace/zoom.cljs @@ -28,20 +28,26 @@ (update :vbox merge (select-keys vbox' [:x :y :width :height]))))) (defn increase-zoom - [center] - (ptk/reify ::increase-zoom - ptk/UpdateEvent - (update [_ state] - (update state :workspace-local - #(impl-update-zoom % center (fn [z] (min (* z 1.3) 200))))))) + ([] + (increase-zoom ::auto)) + ([center] + (ptk/reify ::increase-zoom + ptk/UpdateEvent + (update [_ state] + (let [center (if (= center ::auto) @ms/mouse-position center)] + (update state :workspace-local + #(impl-update-zoom % center (fn [z] (min (* z 1.3) 200))))))))) (defn decrease-zoom - [center] - (ptk/reify ::decrease-zoom - ptk/UpdateEvent - (update [_ state] - (update state :workspace-local - #(impl-update-zoom % center (fn [z] (max (/ z 1.3) 0.01))))))) + ([] + (decrease-zoom ::auto)) + ([center] + (ptk/reify ::decrease-zoom + ptk/UpdateEvent + (update [_ state] + (let [center (if (= center ::auto) @ms/mouse-position center)] + (update state :workspace-local + #(impl-update-zoom % center (fn [z] (max (/ z 1.3) 0.01))))))))) (defn set-zoom [center scale]