diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index 53a70f4bf..d433cc133 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -581,11 +581,14 @@ changes (-> (pcb/empty-changes it) (cll/generate-restore-component ldata component-id library-id page objects)) + page-id + (->> changes :redo-changes (keep :page-id) first) + frames (->> changes :redo-changes (keep :frame-id))] (rx/of (dch/commit-changes changes) - (ptk/data-event :layout/update {:ids frames})))))) + (ptk/data-event :layout/update {:page-id page-id :ids frames})))))) (defn restore-components diff --git a/frontend/src/app/main/data/workspace/shape_layout.cljs b/frontend/src/app/main/data/workspace/shape_layout.cljs index 6436596b1..61b07c159 100644 --- a/frontend/src/app/main/data/workspace/shape_layout.cljs +++ b/frontend/src/app/main/data/workspace/shape_layout.cljs @@ -97,15 +97,17 @@ ;; Never call this directly but through the data-event `:layout/update` ;; Otherwise a lot of cycle dependencies could be generated (defn- update-layout-positions - [{:keys [ids undo-group]}] + [{:keys [page-id ids undo-group]}] (ptk/reify ::update-layout-positions ptk/WatchEvent (watch [_ state _] - (let [objects (dsh/lookup-page-objects state) + (let [page-id (or page-id (:current-page-id state)) + objects (dsh/lookup-page-objects state page-id) ids (->> ids (filter #(contains? objects %)))] (if (d/not-empty? ids) (let [modif-tree (dwm/create-modif-tree ids (ctm/reflow-modifiers))] - (rx/of (dwm/apply-modifiers {:modifiers modif-tree + (rx/of (dwm/apply-modifiers {:page-id page-id + :modifiers modif-tree :stack-undo? true :undo-group undo-group}))) (rx/empty)))))) @@ -127,8 +129,9 @@ (rx/filter #(d/not-empty? %)) (rx/map (fn [data] - (let [ids (reduce #(into %1 (:ids %2)) #{} data)] - (update-layout-positions {:ids ids})))) + (let [page-id (->> data (keep :page-id) first) + ids (reduce #(into %1 (:ids %2)) #{} data)] + (update-layout-positions {:page-id page-id :ids ids})))) (rx/take-until stopper)))))) (defn finalize-shape-layout