mirror of
https://github.com/penpot/penpot.git
synced 2025-01-22 14:39:45 -05:00
🐛 Fix problems with locked frames
This commit is contained in:
parent
302750bd7e
commit
302bfd3007
7 changed files with 28 additions and 13 deletions
|
@ -33,6 +33,7 @@
|
|||
- Fix component and media name validation on assets panel [Taiga #5555](https://tree.taiga.io/project/penpot/issue/5555)
|
||||
- Fix problem with selection shortcuts [Taiga #5492](https://tree.taiga.io/project/penpot/issue/5492)
|
||||
- Fix issue with paths line to curve and concurrent editing [Taiga #5191](https://tree.taiga.io/project/penpot/issue/5191)
|
||||
- Fix problems with locked layers [Taiga #5139](https://tree.taiga.io/project/penpot/issue/5139)
|
||||
|
||||
### :heart: Community contributions by (Thank you!)
|
||||
|
||||
|
|
|
@ -260,7 +260,11 @@
|
|||
|
||||
(let [frame-ids (cond->> (all-frames-by-position objects position)
|
||||
(some? excluded)
|
||||
(remove excluded))
|
||||
(remove excluded)
|
||||
|
||||
:always
|
||||
(remove #(or (dm/get-in objects [% :hidden])
|
||||
(dm/get-in objects [% :blocked]))))
|
||||
|
||||
frame-set (set frame-ids)]
|
||||
|
||||
|
@ -276,7 +280,10 @@
|
|||
"Search the top nested frame in a list of ids"
|
||||
[objects ids]
|
||||
|
||||
(let [frame-ids (->> ids (filter #(cph/frame-shape? objects %)))
|
||||
(let [frame-ids (->> ids
|
||||
(filter #(cph/frame-shape? objects %))
|
||||
(remove #(or (dm/get-in objects [% :hidden])
|
||||
(dm/get-in objects [% :blocked]))))
|
||||
frame-set (set frame-ids)]
|
||||
(loop [current-id (first frame-ids)]
|
||||
(let [current-shape (get objects current-id)
|
||||
|
|
|
@ -63,20 +63,22 @@
|
|||
|
||||
;; Add & select the created shape to the workspace
|
||||
(rx/concat
|
||||
(if (= :text (:type shape))
|
||||
(if (or (= :text (:type shape)) (= :frame (:type shape)))
|
||||
(rx/of (dwu/start-undo-transaction (:id shape)))
|
||||
(rx/empty))
|
||||
|
||||
(rx/of (dwsh/add-shape shape {:no-select? (= tool :curve)}))
|
||||
|
||||
(if (= :frame (:type shape))
|
||||
(->> (uw/ask! {:cmd :selection/query
|
||||
:page-id page-id
|
||||
:rect (:selrect shape)
|
||||
:include-frames? true
|
||||
:full-frame? true})
|
||||
(rx/map #(cph/clean-loops objects %))
|
||||
(rx/map #(dwsh/move-shapes-into-frame (:id shape) %)))
|
||||
(rx/concat
|
||||
(->> (uw/ask! {:cmd :selection/query
|
||||
:page-id page-id
|
||||
:rect (:selrect shape)
|
||||
:include-frames? true
|
||||
:full-frame? true})
|
||||
(rx/map #(cph/clean-loops objects %))
|
||||
(rx/map #(dwsh/move-shapes-into-frame (:id shape) %)))
|
||||
(rx/of (dwu/commit-undo-transaction (:id shape))))
|
||||
(rx/empty)))))
|
||||
|
||||
;; Delay so the mouse event can read the drawing state
|
||||
|
|
|
@ -143,12 +143,14 @@
|
|||
(cond-> (ctl/grid-layout? objects frame-id)
|
||||
(pcb/update-shapes [frame-id] ctl/assign-cells))))))
|
||||
|
||||
(defn move-shapes-into-frame [frame-id shapes]
|
||||
(defn move-shapes-into-frame
|
||||
[frame-id shapes]
|
||||
(ptk/reify ::move-shapes-into-frame
|
||||
ptk/WatchEvent
|
||||
(watch [it state _]
|
||||
(let [page-id (:current-page-id state)
|
||||
objects (wsh/lookup-page-objects state page-id)
|
||||
shapes (->> shapes (remove #(dm/get-in objects [% :blocked])))
|
||||
changes (-> (pcb/empty-changes it page-id)
|
||||
(pcb/with-objects objects))
|
||||
changes (prepare-move-shapes-into-frame changes
|
||||
|
|
|
@ -196,7 +196,7 @@
|
|||
(-> (update-in [:svg-attrs :style] dissoc :mix-blend-mode)
|
||||
(assoc :blend-mode (-> (get-in shape [:svg-attrs :style :mix-blend-mode]) assert-valid-blend-mode)))))
|
||||
|
||||
(defn create-raw-svg [name frame-id svg-data {:keys [tag attrs] :as data}]
|
||||
(defn create-raw-svg [name frame-id svg-data {:keys [attrs] :as data}]
|
||||
(let [{:keys [x y width height offset-x offset-y]} svg-data]
|
||||
(-> {:id (uuid/next)
|
||||
:type :svg-raw
|
||||
|
|
|
@ -203,6 +203,7 @@
|
|||
|
||||
ids (into
|
||||
(d/ordered-set)
|
||||
(remove #(dm/get-in objects [% :blocked]))
|
||||
(ctt/sort-z-index objects ids {:bottom-frames? mod?}))
|
||||
|
||||
grouped? (fn [id] (contains? #{:group :bool} (get-in objects [id :type])))
|
||||
|
|
|
@ -149,7 +149,9 @@
|
|||
text-pos-x (if (:use-for-thumbnail? frame) 15 0)]
|
||||
|
||||
(when (not (:hidden frame))
|
||||
[:g.frame-title {:id (dm/str "frame-title-" (:id frame)) :transform (vwu/title-transform frame zoom)}
|
||||
[:g.frame-title {:id (dm/str "frame-title-" (:id frame))
|
||||
:transform (vwu/title-transform frame zoom)
|
||||
:pointer-events (when (:blocked frame) "none")}
|
||||
(when (:use-for-thumbnail? frame)
|
||||
[:svg {:x 0
|
||||
:y -9
|
||||
|
|
Loading…
Add table
Reference in a new issue