From a4647b33ee6ed4c846beaec6ad417acd38e4b1af Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 14 Apr 2026 19:43:36 +0000 Subject: [PATCH] :bug: Fix CLJS bounds-map deduplication and update intersect test In the CLJS branch of resolve-modif-tree-ids, get-parent-seq returns shape maps, but the js/Set was populated with UUIDs. As a result, .has and .add were passing full shape maps instead of their :id values, so parent deduplication never worked in ClojureScript. Fixed both .has and .add calls to extract (:id %) from the shape map. Also update the collinear-overlap test in geom-shapes-intersect-test to expect true now that the ::coplanar keyword fix (commit 847bf51) makes on-segment? collinear checks actually reachable. --- common/src/app/common/geom/bounds_map.cljc | 4 ++-- .../test/common_tests/geom_shapes_intersect_test.cljc | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/common/src/app/common/geom/bounds_map.cljc b/common/src/app/common/geom/bounds_map.cljc index 55230c9c0b..86bf10b756 100644 --- a/common/src/app/common/geom/bounds_map.cljc +++ b/common/src/app/common/geom/bounds_map.cljc @@ -79,10 +79,10 @@ (loop [new-ids (->> (cfh/get-parent-seq objects cid) (take-while #(and (cfh/group-like-shape? %) - (not (.has ids %)))) + (not (.has ids (:id %))))) (seq))] (when (some? new-ids) - (.add ids (first new-ids)) + (.add ids (:id (first new-ids))) (recur (next new-ids)))) (recur (next base-ids))))) ids))) diff --git a/common/test/common_tests/geom_shapes_intersect_test.cljc b/common/test/common_tests/geom_shapes_intersect_test.cljc index e6c73b0474..1ae12ef2b7 100644 --- a/common/test/common_tests/geom_shapes_intersect_test.cljc +++ b/common/test/common_tests/geom_shapes_intersect_test.cljc @@ -52,12 +52,10 @@ [(pt 0 5) (pt 10 5)])))) (t/testing "Two collinear overlapping segments" - ;; NOTE: The implementation compares orientation result (namespaced keyword ::coplanar) - ;; against unnamespaced :coplanar, so the collinear branch never triggers. - ;; Collinear overlapping segments are NOT detected as intersecting. - (t/is (false? (gint/intersect-segments? - [(pt 0 0) (pt 10 0)] - [(pt 5 0) (pt 15 0)])))) + ;; Collinear overlapping segments correctly detected as intersecting. + (t/is (true? (gint/intersect-segments? + [(pt 0 0) (pt 10 0)] + [(pt 5 0) (pt 15 0)])))) (t/testing "Two non-overlapping collinear segments" (t/is (false? (gint/intersect-segments?