diff --git a/CHANGES.md b/CHANGES.md index 10746d5e5..8135b7eb4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,8 @@ ### :bug: Bugs fixed +- Fixes problem with pan and space [#811](https://github.com/penpot/penpot/issues/811) + ### :arrow_up: Deps updates ### :heart: Community contributions by (Thank you!) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 5ff8e7a68..b31034db4 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -441,24 +441,22 @@ (defn start-panning [] (ptk/reify ::start-panning - ptk/UpdateEvent - (update [_ state] - (-> state - (assoc-in [:workspace-local :panning] true))) - ptk/WatchEvent (watch [_ state stream] (let [stopper (->> stream (rx/filter (ptk/type? ::finish-panning))) zoom (-> (get-in state [:workspace-local :zoom]) gpt/point)] - (->> stream - (rx/filter ms/pointer-event?) - (rx/filter #(= :delta (:source %))) - (rx/map :pt) - (rx/take-until stopper) - (rx/map (fn [delta] - (let [delta (gpt/divide delta zoom)] - (update-viewport-position {:x #(- % (:x delta)) - :y #(- % (:y delta))}))))))))) + (when-not (get-in state [:workspace-local :panning]) + (rx/concat + (rx/of #(-> % (assoc-in [:workspace-local :panning] true))) + (->> stream + (rx/filter ms/pointer-event?) + (rx/filter #(= :delta (:source %))) + (rx/map :pt) + (rx/take-until stopper) + (rx/map (fn [delta] + (let [delta (gpt/divide delta zoom)] + (update-viewport-position {:x #(- % (:x delta)) + :y #(- % (:y delta))}))))))))))) (defn finish-panning [] (ptk/reify ::finish-panning