Merge pull request #6588 from penpot/niwinz-develop-fix-boolean

🐛 Fix incorrect bool shape creation
This commit is contained in:
Andrey Antukh
2025-05-29 11:38:47 +02:00
committed by GitHub
4 changed files with 18 additions and 11 deletions

View File

@@ -33,6 +33,12 @@
(def boolean-or-nil?
(some-fn nil? boolean?))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Commonly used transducers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def xf:map-id (map :id))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Data Structures
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View File

@@ -64,15 +64,15 @@
(-> (lookup-page state file-id page-id)
(get :objects))))
(defn process-selected-shapes
(defn process-selected
([objects selected]
(process-selected-shapes objects selected nil))
(process-selected objects selected nil))
([objects selected {:keys [omit-blocked?] :or {omit-blocked? false}}]
(letfn [(selectable? [id]
(and (contains? objects id)
(or (not omit-blocked?)
(not (get-in objects [id :blocked] false)))))]
(not (dm/get-in objects [id :blocked] false)))))]
(let [selected (->> selected (cfh/clean-loops objects))]
(into (d/ordered-set)
(filter selectable?)
@@ -95,7 +95,7 @@
([state page-id options]
(let [objects (lookup-page-objects state page-id)
selected (dm/get-in state [:workspace-local :selected])]
(process-selected-shapes objects selected options))))
(process-selected objects selected options))))
(defn lookup-shape
([state id]

View File

@@ -44,7 +44,7 @@
:frame-id (:frame-id head)
:parent-id (:parent-id head)
:name name
:shapes (vec shapes)}
:shapes (into [] d/xf:map-id shapes)}
shape
(-> shape
@@ -69,8 +69,8 @@
(-> type d/name str/capital)
ids
(->> (or ids (dsh/lookup-selected state))
(cph/clean-loops objects))
(->> (or ids (dsh/get-selected-ids state))
(dsh/process-selected objects))
xform
(comp

View File

@@ -159,14 +159,15 @@
(let [objects (dsh/lookup-page-objects state)
selected (dm/get-in state [:workspace-local :selected])]
{:objects objects :selected selected}))
st/state (fn [v1 v2]
(and (identical? (:objects v1) (:objects v2))
(= (:selected v1) (:selected v2))))))
st/state
(fn [v1 v2]
(and (identical? (:objects v1) (:objects v2))
(= (:selected v1) (:selected v2))))))
(def selected-shapes
(l/derived
(fn [{:keys [objects selected]}]
(dsh/process-selected-shapes objects selected))
(dsh/process-selected objects selected))
selected-shapes-data =))
(defn make-selected-ref