From 828455ac27e824b4874ce13aa8e260d9f8074583 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 15 Jun 2020 12:02:36 +0200 Subject: [PATCH] :bug: Fix parent handling on duplicate. --- frontend/src/uxbox/main/data/workspace.cljs | 2 +- .../uxbox/main/data/workspace/selection.cljs | 29 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/frontend/src/uxbox/main/data/workspace.cljs b/frontend/src/uxbox/main/data/workspace.cljs index f0932dee08..baf5f644b5 100644 --- a/frontend/src/uxbox/main/data/workspace.cljs +++ b/frontend/src/uxbox/main/data/workspace.cljs @@ -777,7 +777,7 @@ (us/verify ::us/uuid parent-id) (us/verify number? to-index) - (ptk/reify ::relocate-shape + (ptk/reify ::relocate-shapes ptk/WatchEvent (watch [_ state stream] (let [page-id (:current-page-id state) diff --git a/frontend/src/uxbox/main/data/workspace/selection.cljs b/frontend/src/uxbox/main/data/workspace/selection.cljs index ce04297a81..4c5593c294 100644 --- a/frontend/src/uxbox/main/data/workspace/selection.cljs +++ b/frontend/src/uxbox/main/data/workspace/selection.cljs @@ -197,25 +197,24 @@ fit." [objects names ids delta] (loop [names names - chgs [] - id (first ids) - ids (rest ids)] - (if (nil? id) - chgs - (let [result (prepare-duplicate-change objects names id delta) + ids (seq ids) + chgs []] + (if ids + (let [id (first ids) + result (prepare-duplicate-change objects names id delta) result (if (vector? result) result [result])] (recur (into names (map change->name) result) - (into chgs result) - (first ids) - (rest ids)))))) + (next ids) + (into chgs result))) + chgs))) (defn- prepare-duplicate-change [objects names id delta] (let [obj (get objects id)] (if (= :frame (:type obj)) (prepare-duplicate-frame-change objects names obj delta) - (prepare-duplicate-shape-change objects names obj delta nil nil)))) + (prepare-duplicate-shape-change objects names obj delta (:frame-id obj) (:parent-id obj))))) (defn- prepare-duplicate-shape-change [objects names obj delta frame-id parent-id] @@ -223,7 +222,7 @@ name (generate-unique-name names (:name obj)) renamed-obj (assoc obj :id id :name name) moved-obj (geom/move renamed-obj delta) - frames (cph/select-frames objects) + frames (cph/select-frames objects) frame-id (if frame-id frame-id (dwc/calculate-frame-overlap frames moved-obj)) @@ -283,11 +282,11 @@ (ptk/reify ::duplicate-selected ptk/WatchEvent (watch [_ state stream] - (let [page-id (:current-page-id state) + (let [page-id (:current-page-id state) selected (get-in state [:workspace-local :selected]) - objects (get-in state [:workspace-data page-id :objects]) - delta (gpt/point 0 0) - unames (retrieve-used-names objects) + objects (get-in state [:workspace-data page-id :objects]) + delta (gpt/point 0 0) + unames (retrieve-used-names objects) rchanges (prepare-duplicate-changes objects unames selected delta) uchanges (mapv #(array-map :type :del-obj :id (:id %))