mirror of
https://github.com/penpot/penpot.git
synced 2025-06-07 03:31:38 +02:00
🐛 Fixes problem when moving parent to children group
This commit is contained in:
parent
d66452423f
commit
b056cc35e4
3 changed files with 26 additions and 0 deletions
|
@ -61,6 +61,7 @@
|
||||||
(d/export helpers/set-touched-group)
|
(d/export helpers/set-touched-group)
|
||||||
(d/export helpers/touched-group?)
|
(d/export helpers/touched-group?)
|
||||||
(d/export helpers/get-base-shape)
|
(d/export helpers/get-base-shape)
|
||||||
|
(d/export helpers/is-parent?)
|
||||||
|
|
||||||
;; Process changes
|
;; Process changes
|
||||||
(d/export changes/process-changes)
|
(d/export changes/process-changes)
|
||||||
|
|
|
@ -376,3 +376,25 @@
|
||||||
|
|
||||||
;; The first id will be the top-most
|
;; The first id will be the top-most
|
||||||
(get objects (first sorted-ids))))
|
(get objects (first sorted-ids))))
|
||||||
|
|
||||||
|
(defn is-parent?
|
||||||
|
"Check if `parent-candidate` is parent of `shape-id`"
|
||||||
|
[objects shape-id parent-candidate]
|
||||||
|
|
||||||
|
(loop [current (get objects parent-candidate)
|
||||||
|
done #{}
|
||||||
|
pending (:shapes current)]
|
||||||
|
|
||||||
|
(cond
|
||||||
|
(contains? done (:id current))
|
||||||
|
(recur (get objects (first pending))
|
||||||
|
done
|
||||||
|
(rest pending))
|
||||||
|
|
||||||
|
(empty? pending) false
|
||||||
|
(and current (contains? (set (:shapes current)) shape-id)) true
|
||||||
|
|
||||||
|
:else
|
||||||
|
(recur (get objects (first pending))
|
||||||
|
(conj done (:id current))
|
||||||
|
(concat (rest pending) (:shapes current))))))
|
||||||
|
|
|
@ -822,6 +822,9 @@
|
||||||
;; Ignore any shape whose parent is also intented to be moved
|
;; Ignore any shape whose parent is also intented to be moved
|
||||||
ids (cp/clean-loops objects ids)
|
ids (cp/clean-loops objects ids)
|
||||||
|
|
||||||
|
;; If we try to move a parent into a child we remove it
|
||||||
|
ids (filter #(not (cp/is-parent? objects parent-id %)) ids)
|
||||||
|
|
||||||
parents (loop [res #{parent-id}
|
parents (loop [res #{parent-id}
|
||||||
ids (seq ids)]
|
ids (seq ids)]
|
||||||
(if (nil? ids)
|
(if (nil? ids)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue