mirror of
https://github.com/penpot/penpot.git
synced 2025-01-22 14:39:45 -05:00
🐛 Fix problems when moving shapes in layouts
This commit is contained in:
parent
b6be1c2e1a
commit
c17d2c1aba
2 changed files with 16 additions and 9 deletions
|
@ -428,12 +428,14 @@
|
|||
comps-nesting-loop?)))
|
||||
|
||||
(defn find-valid-parent-and-frame-ids
|
||||
"Navigate trough the ancestors until find one that is valid"
|
||||
"Navigate trough the ancestors until find one that is valid. Returns [ parent-id frame-id ]"
|
||||
[parent-id objects children]
|
||||
(let [parent (get objects parent-id)]
|
||||
(if (invalid-structure-for-component? objects parent children)
|
||||
(find-valid-parent-and-frame-ids (:parent-id parent) objects children)
|
||||
[parent-id
|
||||
(if (= :frame (:type parent))
|
||||
parent-id
|
||||
(:frame-id parent))])))
|
||||
(letfn [(get-frame [parent-id]
|
||||
(if (cfh/frame-shape? objects parent-id) parent-id (get-in objects [parent-id :frame-id])))]
|
||||
(let [parent (get objects parent-id)
|
||||
;; We can always move the children to the parent they already have
|
||||
no-changes?
|
||||
(->> children (every? #(= parent-id (:parent-id %))))]
|
||||
(if (or no-changes? (not (invalid-structure-for-component? objects parent children)))
|
||||
[parent-id (get-frame parent-id)]
|
||||
(recur (:parent-id parent) objects children)))))
|
||||
|
|
|
@ -511,7 +511,11 @@
|
|||
objects (wsh/lookup-page-objects state page-id)
|
||||
selected (wsh/lookup-selected state {:omit-blocked? true})
|
||||
ids (if (nil? ids) selected ids)
|
||||
shapes (mapv #(get objects %) ids)
|
||||
shapes (into []
|
||||
(comp (map (d/getf objects))
|
||||
(remove ctk/in-component-copy-not-head?))
|
||||
ids)
|
||||
|
||||
duplicate-move-started? (get-in state [:workspace-local :duplicate-move-started?] false)
|
||||
|
||||
stopper (->> stream
|
||||
|
@ -670,6 +674,7 @@
|
|||
|
||||
{:keys [layout-grid-cells]}
|
||||
(->> children
|
||||
(remove #(ctk/in-component-copy-not-head? (get objects %)))
|
||||
(keep #(ctl/get-cell-by-shape-id parent %))
|
||||
(sort-by key-prop key-comp)
|
||||
(reduce (fn [parent {:keys [id row column row-span column-span]}]
|
||||
|
|
Loading…
Add table
Reference in a new issue