0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-13 16:21:57 -05:00

🐛 Fixes problems with pages in workspace.

This commit is contained in:
alonso.torres 2020-10-27 11:11:50 +01:00 committed by Hirunatan
parent c5e617271c
commit aaaf099a3f
4 changed files with 33 additions and 19 deletions

View file

@ -190,7 +190,10 @@
(ptk/reify ::initialize-page
ptk/UpdateEvent
(update [_ state]
(let [local (get-in state [:workspace-cache page-id] workspace-local-default)
(let [prev-local (get state :workspace-local)
local (-> state
(get-in [:workspace-cache page-id] workspace-local-default)
(merge (select-keys prev-local [:vbox :vport :zoom])))
page (-> (get-in state [:workspace-data :pages-index page-id])
(select-keys [:id :name]))]
(assoc state
@ -311,7 +314,7 @@
objects (dwc/lookup-page-objects state page-id)
shapes (cph/select-toplevel-shapes objects {:include-frames? true})
srect (geom/selection-rect shapes)
local (assoc local :vport size)]
local (assoc local :vport size :zoom 1)]
(cond
(or (not (mth/finite? (:width srect)))
(not (mth/finite? (:height srect))))

View file

@ -88,7 +88,10 @@
(st/emitf (dw/finalize-page page-id))))
(when page
[:& workspace-content {:file file :layout layout :local local}])))
[:& workspace-content {:key page-id
:file file
:layout layout
:local local}])))
(mf/defc workspace-loader
[]

View file

@ -34,7 +34,7 @@
id (:id page)
delete-fn (mf/use-callback (mf/deps id) #(st/emit! (dw/delete-page id)))
on-delete (mf/use-callback (mf/deps id) #(modal/show! :confirm-dialog {:on-accept delete-fn}))
on-delete (mf/use-callback (mf/deps id) #(modal/show! :confirm {:on-accept delete-fn}))
navigate-fn (mf/use-callback (mf/deps id) #(st/emit! (dw/go-to-page id)))
on-double-click

View file

@ -461,8 +461,10 @@
on-resize
(fn [event]
(let [node (mf/ref-val viewport-ref)
prnt (dom/get-parent node)]
(st/emit! (dw/update-viewport-size (dom/get-client-size prnt)))))
prnt (dom/get-parent node)
size (dom/get-client-size prnt)]
;; We schedule the event so it fires after `initialize-page` event
(timers/schedule #(st/emit! (dw/update-viewport-size size)))))
options (mf/deref refs/workspace-page-options)]
@ -471,20 +473,26 @@
(let [node (mf/ref-val viewport-ref)
prnt (dom/get-parent node)
key1 (events/listen (dom/get-root) EventType.KEYDOWN on-key-down)
key2 (events/listen (dom/get-root) EventType.KEYUP on-key-up)
key3 (events/listen node EventType.MOUSEMOVE on-mouse-move)
;; bind with passive=false to allow the event to be cancelled
;; https://stackoverflow.com/a/57582286/3219895
key4 (events/listen js/window EventType.WHEEL on-mouse-wheel #js {:passive false})
key5 (events/listen js/window EventType.RESIZE on-resize)]
(st/emit! (dw/initialize-viewport (dom/get-client-size prnt)))
keys [(events/listen (dom/get-root) EventType.KEYDOWN on-key-down)
(events/listen (dom/get-root) EventType.KEYUP on-key-up)
(events/listen node EventType.MOUSEMOVE on-mouse-move)
;; bind with passive=false to allow the event to be cancelled
;; https://stackoverflow.com/a/57582286/3219895
(events/listen js/window EventType.WHEEL on-mouse-wheel #js {:passive false})
(events/listen js/window EventType.RESIZE on-resize)]]
(fn []
(events/unlistenByKey key1)
(events/unlistenByKey key2)
(events/unlistenByKey key3)
(events/unlistenByKey key4)
(events/unlistenByKey key5)))))
(doseq [key keys]
(events/unlistenByKey key))))))
(mf/use-layout-effect
(fn []
(mf/deps page-id)
(let [node (mf/ref-val viewport-ref)
prnt (dom/get-parent node)
size (dom/get-client-size prnt)]
;; We schedule the event so it fires after `initialize-page` event
(timers/schedule #(st/emit! (dw/initialize-viewport size))))))
(mf/use-layout-effect (mf/deps layout) on-resize)