0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-26 08:45:34 -05:00

Fix copy/paste for multiple frames

This commit is contained in:
alonso.torres 2022-06-09 19:52:12 +02:00
parent 9bd382f833
commit b4e218c13a

View file

@ -1241,8 +1241,8 @@
;; Prepare the shape object. Mainly needed for image shapes ;; Prepare the shape object. Mainly needed for image shapes
;; for retrieve the image data and convert it to the ;; for retrieve the image data and convert it to the
;; data-url. ;; data-url.
(prepare-object [objects selected {:keys [type] :as obj}] (prepare-object [objects selected+children {:keys [type] :as obj}]
(let [obj (maybe-translate obj objects selected)] (let [obj (maybe-translate obj objects selected+children)]
(if (= type :image) (if (= type :image)
(let [url (cfg/resolve-file-media (:metadata obj))] (let [url (cfg/resolve-file-media (:metadata obj))]
(->> (http/send! {:method :get (->> (http/send! {:method :get
@ -1265,9 +1265,9 @@
(update res :images conj img-part)) (update res :images conj img-part))
res))) res)))
(maybe-translate [shape objects selected] (maybe-translate [shape objects selected+children]
(if (and (not= (:type shape) :frame) (if (and (not= (:type shape) :frame)
(not (contains? selected (:frame-id shape)))) (not (contains? selected+children (:frame-id shape))))
;; When the parent frame is not selected we change to relative ;; When the parent frame is not selected we change to relative
;; coordinates ;; coordinates
(let [frame (get objects (:frame-id shape))] (let [frame (get objects (:frame-id shape))]
@ -1284,6 +1284,8 @@
(let [objects (wsh/lookup-page-objects state) (let [objects (wsh/lookup-page-objects state)
selected (->> (wsh/lookup-selected state) selected (->> (wsh/lookup-selected state)
(cph/clean-loops objects)) (cph/clean-loops objects))
selected+children (cph/selected-with-children objects selected)
pdata (reduce (partial collect-object-ids objects) {} selected) pdata (reduce (partial collect-object-ids objects) {} selected)
initial {:type :copied-shapes initial {:type :copied-shapes
:file-id (:current-file-id state) :file-id (:current-file-id state)
@ -1293,7 +1295,7 @@
(->> (rx/from (seq (vals pdata))) (->> (rx/from (seq (vals pdata)))
(rx/merge-map (partial prepare-object objects selected)) (rx/merge-map (partial prepare-object objects selected+children))
(rx/reduce collect-data initial) (rx/reduce collect-data initial)
(rx/map (partial sort-selected state)) (rx/map (partial sort-selected state))
(rx/map t/encode-str) (rx/map t/encode-str)