Follow inspected Saved scenario through the actual arrangement picker

This commit is contained in:
2026-09-13 06:18:34 -07:00
parent 8bf7607a3f
commit 5d4a6a47ce
13 changed files with 341 additions and 29 deletions
+16 -1
View File
@@ -10,6 +10,8 @@ mod hosted;
mod reference_authoring;
#[cfg(test)]
mod review_navigation_tests;
#[cfg(test)]
mod scenario_details_tests;
mod scenario_diagram;
mod scenario_spacing;
pub(crate) mod source_rename;
@@ -2041,6 +2043,11 @@ impl App {
if checked_owner(self.project(), requested) != Some(context.scenario) {
return Task::none();
}
// An explicitly selected current view record follows
// the arrangement picker, as with the Diagram picker.
// Independent occurrence/lifeline selection stays put.
let follow_view = matches!(context.representation,
Representation::Saved { diagram } if self.selected == diagram);
if !self.apply() {
return Task::none();
}
@@ -2058,7 +2065,15 @@ impl App {
},
other => other,
};
self.enter_scenario_representation(requested);
if self.enter_scenario_representation(requested) && follow_view {
self.selected = match requested {
Representation::Saved { diagram } => diagram,
// Automatic has no Diagram record; its Scenario
// owner is the corresponding inspectable target.
Representation::Derived { owner } => owner,
};
self.refresh_draft();
}
}
CanvasEvent::Focus(_) => {
self.behavior.scenario.toggle_focus();