feat(xref): reference list with stale and orphaned status detection

Reference list rows showing stale and orphaned states with handle-based identity.
This commit is contained in:
Karim Jerbi committed 2026-09-15 23:56:31 +01:00
1 parent 37e2b50e1c
commit 42219a4b8c
9 files changed
+442 -1141

No files matched your search

+30
View File
@@ -314,6 +314,9 @@ impl OpenCADStudio {
// The block panel watches the drawing's block list and rebuilds its
// thumbnails whenever the names change (BLOCK define, file open, …).
self.refresh_block_palette_if_stale();
// The Reference Manager watches the active drawing and re-scans when
// the palette is open on another tab's entries.
self.refresh_xref_manager_if_stale();
// Let V4 plugins observe selection changes that happened while handling
// this message (picking, window select, QSELECT, SELECTALL, grip edits,
// and plugin request draining).
@@ -2127,6 +2130,33 @@ impl OpenCADStudio {
Task::none()
}
Message::ToggleXrefManager => {
if self.active_modal == Some(super::ModalKind::XrefManager) {
self.active_modal = None;
self.reset_modal_geometry();
} else {
self.refresh_xref_manager();
self.active_modal = Some(super::ModalKind::XrefManager);
}
Task::none()
}
Message::XrefManagerRefresh => {
self.refresh_xref_manager();
Task::none()
}
Message::XrefManagerSelect(index) => {
self.xref_manager.toggle_select(index);
Task::none()
}
Message::XrefManagerToggleTree => {
self.xref_manager.toggle_tree();
Task::none()
}
Message::XrefManagerToggleExpand(key) => {
self.xref_manager.toggle_expand(key);
Task::none()
}
Message::LayerStateManagerOpen => {
let i = self.active_tab;
self.ribbon.close_dropdown();