mirror of
https://github.com/penpot/penpot.git
synced 2025-03-13 00:01:51 -05:00
✨ Paste on position in grid
This commit is contained in:
parent
714b2c8805
commit
0e152bb7f9
2 changed files with 26 additions and 4 deletions
|
@ -994,3 +994,18 @@
|
|||
(-> parent
|
||||
(assoc-in [:layout-grid-cells id-from :shapes] (dm/get-in parent [:layout-grid-cells id-to :shapes]))
|
||||
(assoc-in [:layout-grid-cells id-to :shapes] (dm/get-in parent [:layout-grid-cells id-from :shapes]))))
|
||||
|
||||
(defn add-children-to-cell
|
||||
[frame children objects [row column :as cell]]
|
||||
(let [;; Temporary remove the children when moving them
|
||||
frame (-> frame
|
||||
(update :shapes #(d/removev children %))
|
||||
(assign-cells))
|
||||
|
||||
children (->> children (remove #(layout-absolute? objects %)))]
|
||||
|
||||
(-> frame
|
||||
(update :shapes d/concat-vec children)
|
||||
(cond-> (some? cell)
|
||||
(push-into-cell children row column))
|
||||
(assign-cells))))
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
[app.common.geom.point :as gpt]
|
||||
[app.common.geom.proportions :as gpp]
|
||||
[app.common.geom.shapes :as gsh]
|
||||
[app.common.geom.shapes.grid-layout :as gslg]
|
||||
[app.common.logging :as log]
|
||||
[app.common.pages :as cp]
|
||||
[app.common.pages.changes-builder :as pcb]
|
||||
|
@ -1806,13 +1807,19 @@
|
|||
|
||||
changes (-> (dws/prepare-duplicate-changes all-objects page selected delta it libraries library-data file-id)
|
||||
(pcb/amend-changes (partial process-rchange media-idx))
|
||||
(pcb/amend-changes (partial change-add-obj-index paste-objects selected index))
|
||||
(cond-> (ctl/grid-layout? all-objects parent-id)
|
||||
(pcb/update-shapes [parent-id] ctl/assign-cells)))
|
||||
(pcb/amend-changes (partial change-add-obj-index paste-objects selected index)))
|
||||
|
||||
;; Adds a resize-parents operation so the groups are updated. We add all the new objects
|
||||
new-objects-ids (->> changes :redo-changes (filter #(= (:type %) :add-obj)) (mapv :id))
|
||||
changes (pcb/resize-parents changes new-objects-ids)
|
||||
|
||||
drop-cell
|
||||
(when (ctl/grid-layout? all-objects parent-id)
|
||||
(gslg/get-drop-cell frame-id all-objects mouse-pos))
|
||||
|
||||
changes
|
||||
(-> (pcb/resize-parents changes new-objects-ids)
|
||||
(cond-> (some? drop-cell)
|
||||
(pcb/update-shapes [parent-id] #(ctl/add-children-to-cell % (into (d/ordered-set) new-objects-ids) all-objects drop-cell))))
|
||||
|
||||
selected (->> changes
|
||||
:redo-changes
|
||||
|
|
Loading…
Add table
Reference in a new issue