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:
parent
c5e617271c
commit
aaaf099a3f
4 changed files with 33 additions and 19 deletions
|
@ -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))))
|
||||
|
|
|
@ -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
|
||||
[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue