diff --git a/common/src/app/common/types/container.cljc b/common/src/app/common/types/container.cljc index b50c5058a..d038ca50c 100644 --- a/common/src/app/common/types/container.cljc +++ b/common/src/app/common/types/container.cljc @@ -386,7 +386,8 @@ (fn [new-shape original-shape] (let [new-name (:name new-shape) root? (or (ctk/instance-root? original-shape) ; If shape is inside a component (not components-v2) - (nil? (:parent-id original-shape)))] ; we detect it by having no parent) + (nil? (:parent-id original-shape))) ; we detect it by having no parent) + swap-slot (ctk/get-swap-slot original-shape)] (when root? (vswap! unames conj new-name)) @@ -398,6 +399,9 @@ (-> (gsh/move delta) (dissoc :touched)) + (some? swap-slot) + (assoc :touched #{(ctk/build-swap-slot-group swap-slot)}) + (and main-instance? root?) (assoc :main-instance true) diff --git a/frontend/src/app/main/data/workspace/selection.cljs b/frontend/src/app/main/data/workspace/selection.cljs index 8ce2cfe1f..b233f561d 100644 --- a/frontend/src/app/main/data/workspace/selection.cljs +++ b/frontend/src/app/main/data/workspace/selection.cljs @@ -486,6 +486,7 @@ duplicating-component? (or duplicating-component? (ctk/instance-head? obj)) is-component-main? (ctk/main-instance? obj) subinstance-head? (ctk/subinstance-head? obj) + instance-root? (ctk/instance-root? obj) into-component? (and duplicating-component? (ctn/in-any-component? objects parent)) @@ -508,7 +509,9 @@ :parent-id parent-id :frame-id frame-id) - (cond-> (and subinstance-head? remove-swap-slot?) + (cond-> (and (not instance-root?) + subinstance-head? + remove-swap-slot?) (ctk/remove-swap-slot)) (dissoc :shapes @@ -581,8 +584,9 @@ true (and remove-swap-slot? ;; only remove swap slot of children when the current shape - ;; is not a subinstance head - (not subinstance-head?)))) + ;; is not a subinstance head nor a instance root + (not subinstance-head?) + (not instance-root?)))) changes (map (d/getf objects) (:shapes obj)))))))