Skip to content

Commit fab8c34

Browse files
committed
fix kdtree update
1 parent 78ec9be commit fab8c34

File tree

7 files changed

+17
-307
lines changed

7 files changed

+17
-307
lines changed

.clj-kondo/metosin/malli-types-cljs/config.edn

Lines changed: 0 additions & 281 deletions
Large diffs are not rendered by default.

src/renderer/app/db.cljs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@
7979
[:copied-elements {:optional true} [:* Element]]
8080
[:kdtree {:optional true} any?]
8181
[:viewbox-kdtree {:optional true} any?]
82-
[:snapping-points {:optional true} [:vector Vec2D]]
8382
[:re-pressed.core/keydown {:optional true} map?]])
8483

8584
(def valid? (m/validator App))

src/renderer/document/handlers.cljs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
[renderer.frame.handlers :as frame.h]
99
[renderer.notification.handlers :as notification.h]
1010
[renderer.notification.views :as notification.v]
11+
[renderer.snap.handlers :as snap.h]
1112
[renderer.utils.vec :as vec]))
1213

1314
(defn path
@@ -22,7 +23,10 @@
2223
(m/=> set-active [:-> App uuid? App])
2324
(defn set-active
2425
[db id]
25-
(assoc db :active-document id))
26+
(cond-> db
27+
id
28+
(-> (assoc :active-document id)
29+
(snap.h/rebuild-tree))))
2630

2731
(m/=> persisted-format [:function
2832
[:-> App PersistedDocument]

src/renderer/element/impl/container/canvas.cljs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@
4242
snap-active @(rf/subscribe [::snap.s/active])
4343
nearest-neighbor @(rf/subscribe [::snap.s/nearest-neighbor])
4444
snapped-el-id (-> nearest-neighbor meta :id)
45-
snapped-el (when snapped-el-id @(rf/subscribe [::s/entity snapped-el-id]))
46-
snapping-points @(rf/subscribe [::snap.s/points])
47-
debug @(rf/subscribe [::app.s/debug-info])]
45+
snapped-el (when snapped-el-id @(rf/subscribe [::s/entity snapped-el-id]))]
4846
[:svg#canvas {:on-pointer-up pointer-handler
4947
:on-pointer-down pointer-handler
5048
:on-pointer-move pointer-handler
@@ -72,11 +70,6 @@
7270
[tool.hierarchy/render (or primary-tool active-tool)]
7371
[hierarchy/render temp-element]])
7472

75-
(when debug
76-
[into [:g]
77-
(for [snapping-point snapping-points]
78-
[overlay/point-of-interest snapping-point])])
79-
8073
(when snap-active
8174
[:<>
8275
(when snapped-el

src/renderer/snap/handlers.cljs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,31 +58,30 @@
5858
points (cond-> points
5959
(contains? (-> db :snap :options) :grid)
6060
(into (ruler.h/steps-intersections db)))]
61-
(-> (assoc db
62-
:snapping-points points
63-
:kdtree (kdtree/build-tree points))
61+
(-> (assoc db :kdtree (kdtree/build-tree points))
6462
(update-viewbox-tree)))
65-
(dissoc db :kdtree :viewbox-kdtree :snapping-points)))
63+
(dissoc db :kdtree :viewbox-kdtree)))
6664

6765
(defn update-tree
6866
[db f points]
69-
(cond-> db
70-
(not-empty points)
71-
(-> (update :snapping-points conj points
72-
:kdtree f points)
73-
(update-viewbox-tree))))
67+
(if (:kdtree db)
68+
(if (empty? points)
69+
db
70+
(-> (reduce #(update %1 :kdtree f %2) db points)
71+
(update-viewbox-tree)))
72+
(rebuild-tree db)))
7473

7574
(m/=> insert-to-tree [:-> App [:set uuid?] App])
7675
(defn insert-to-tree
7776
[db ids]
78-
(let [points (->> (element.h/entities db ids)
77+
(let [points (->> (vals (element.h/entities db ids))
7978
(element.h/snapping-points db))]
8079
(update-tree db kdtree/insert points)))
8180

8281
(m/=> delete-from-tree [:-> App [:set uuid?] App])
8382
(defn delete-from-tree
8483
[db ids]
85-
(let [points (->> (element.h/entities db ids)
84+
(let [points (->> (vals (element.h/entities db ids))
8685
(element.h/snapping-points db))]
8786
(update-tree db kdtree/delete points)))
8887

src/renderer/snap/subs.cljs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88
::snap
99
:-> :snap)
1010

11-
(rf/reg-sub
12-
::points
13-
:-> :snapping-points)
14-
1511
(rf/reg-sub
1612
::active
1713
:<- [::snap]

src/renderer/tool/impl/base/transform.cljs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@
264264
(element.h/clear-hovered))
265265
(selectable? clicked-element)
266266
(-> (element.h/select (-> db :clicked-element :id) (pointer/shift? e))
267-
(snap.h/rebuild-tree)))))
267+
(snap.h/delete-from-tree #{(-> db :clicked-element :id)})))))
268268

269269
(defmethod hierarchy/drag :transform
270270
[db e]

0 commit comments

Comments
 (0)