fix(pick): overlapping entities resolve to the front-most in draw order

Fixes #1439

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-09-28 18:01:38 +03:00
1 parent bb9e447c64
commit e97314cdef
2 files changed
+32 -6

No files matched your search

+7
View File
@@ -2591,6 +2591,7 @@ impl OpenCADStudio {
bounds,
self.tabs[i].scene.document.header.lineweight_display,
crate::ui::overlay::pick_box_aperture_px(self.pick_box),
&self.tabs[i].scene.draw_depth_map(),
)
.and_then(|s| Scene::handle_from_wire_name(s))
.or_else(|| {
@@ -3581,6 +3582,7 @@ impl OpenCADStudio {
bounds,
self.tabs[i].scene.document.header.lineweight_display,
crate::ui::overlay::pick_box_aperture_px(self.pick_box),
&self.tabs[i].scene.draw_depth_map(),
)
.and_then(Scene::handle_from_wire_name)
.and_then(|handle| self.tabs[i].scene.document.get_entity(handle))
@@ -4110,6 +4112,7 @@ impl OpenCADStudio {
bounds,
self.tabs[i].scene.document.header.lineweight_display,
crate::ui::overlay::pick_box_aperture_px(self.pick_box),
&self.tabs[i].scene.draw_depth_map(),
)
.and_then(|s| Scene::handle_from_wire_name(s))
.or_else(|| {
@@ -4858,6 +4861,7 @@ properties={:.1}ms picked={}",
bounds,
self.tabs[i].scene.document.header.lineweight_display,
crate::ui::overlay::pick_box_aperture_px(self.pick_box),
&self.tabs[i].scene.draw_depth_map(),
)
.and_then(|s| Scene::handle_from_wire_name(s))
.or_else(|| {
@@ -5237,6 +5241,7 @@ properties={:.1}ms picked={}",
bounds,
self.tabs[i].scene.document.header.lineweight_display,
crate::ui::overlay::pick_box_aperture_px(self.pick_box),
&self.tabs[i].scene.draw_depth_map(),
)
.and_then(|s| Scene::handle_from_wire_name(s))
.or_else(|| {
@@ -5382,6 +5387,7 @@ properties={:.1}ms picked={}",
bounds,
self.tabs[i].scene.document.header.lineweight_display,
crate::ui::overlay::pick_box_aperture_px(self.pick_box),
&self.tabs[i].scene.draw_depth_map(),
)
.and_then(|s| Scene::handle_from_wire_name(s));
@@ -5915,6 +5921,7 @@ properties={:.1}ms picked={}",
bounds,
self.tabs[i].scene.document.header.lineweight_display,
crate::ui::overlay::pick_box_aperture_px(self.pick_box),
&self.tabs[i].scene.draw_depth_map(),
)
.and_then(Scene::handle_from_wire_name);
let wire_ms = wire_started.elapsed().as_secs_f64() * 1000.0;