diff --git a/src/app/update/mod.rs b/src/app/update/mod.rs
index 62ab2c13c..be766631c 100644
--- a/src/app/update/mod.rs
+++ b/src/app/update/mod.rs
@@ -3687,8 +3687,8 @@ impl OpenCADStudio {
let i = self.active_tab;
let types = self.tabs[i].scene.entity_type_names_in_layout();
let f = &mut self.tabs[i].scene.selection_filter;
- for t in types {
- f.insert(t.to_string());
+ for t in types.iter() {
+ f.insert(t.clone());
}
Task::none()
}
diff --git a/src/app/view/mod.rs b/src/app/view/mod.rs
index 0e6e3c4e3..ec566dc3a 100644
--- a/src/app/view/mod.rs
+++ b/src/app/view/mod.rs
@@ -1932,9 +1932,8 @@ impl OpenCADStudio {
selection_types: tab
.scene
.entity_type_names_in_layout()
- .into_iter()
- .map(|name| name.to_string())
- .collect(),
+ .as_ref()
+ .clone(),
selection_filter: &tab.scene.selection_filter,
tooltip_hidden: self.status_menu_tooltip_hidden,
};
diff --git a/src/scene/mod.rs b/src/scene/mod.rs
index dc16aac6b..abbacd6ca 100644
--- a/src/scene/mod.rs
+++ b/src/scene/mod.rs
@@ -1789,6 +1789,11 @@ pub struct Scene {
/// Reverse map: entity_handle → block_record_handle, built from entity_handles lists.
/// Keyed by geometry_epoch. Eliminates the O(B) fallback scan in belongs_to_visible_block.
entity_block_map_cache: RefCell