forked from 1b-agent/opencadstudio-upstream
feat(statusbar): highlight cycling-list object on row hover
Add a scene hover_highlight handle that renders an entity with the selection colour without joining the real selection. The cycling list box sets it on row enter / clears on exit, so hovering a row glows the matching object in the drawing. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
bcbda65746
commit
a9228b9021
4 files changed
+45
-6
No files matched your search
@@ -767,6 +767,8 @@ pub enum Message {
|
||||
ToggleSelectionCycling,
|
||||
/// Add an object from the selection-cycling list box to the selection.
|
||||
CycleSelect(acadrust::Handle),
|
||||
/// Preview (highlight) a cycling-list row's object, or clear with `None`.
|
||||
CycleHover(Option<acadrust::Handle>),
|
||||
/// Dismiss the selection-cycling list box without picking.
|
||||
CycleCancel,
|
||||
/// Toggle the selection-filter type picker open/closed.
|
||||
|
||||
@@ -3631,19 +3631,27 @@ impl OpenCADStudio {
|
||||
Message::ToggleSelectionCycling => {
|
||||
self.selection_cycling ^= true;
|
||||
self.cycle_candidates = None;
|
||||
self.tabs[self.active_tab].scene.set_hover_highlight(None);
|
||||
Task::none()
|
||||
}
|
||||
Message::CycleSelect(handle) => {
|
||||
// Add the picked object to the current selection (accumulate).
|
||||
self.cycle_candidates = None;
|
||||
let i = self.active_tab;
|
||||
self.tabs[i].scene.set_hover_highlight(None);
|
||||
self.tabs[i].scene.select_entity(handle, false);
|
||||
self.tabs[i].scene.expand_selection_for_groups(&[handle]);
|
||||
self.refresh_properties();
|
||||
Task::none()
|
||||
}
|
||||
Message::CycleHover(handle) => {
|
||||
let i = self.active_tab;
|
||||
self.tabs[i].scene.set_hover_highlight(handle);
|
||||
Task::none()
|
||||
}
|
||||
Message::CycleCancel => {
|
||||
self.cycle_candidates = None;
|
||||
self.tabs[self.active_tab].scene.set_hover_highlight(None);
|
||||
Task::none()
|
||||
}
|
||||
Message::ToggleSelectionFilterPopup => {
|
||||
|
||||
Reference in new issue
Block a user