Integrate release recovery, semantic review, coverage and Windows packaging
This commit is contained in:
@@ -6,6 +6,41 @@ use crate::behavior::{
|
||||
};
|
||||
|
||||
impl App {
|
||||
/// A saved state view has one renderer and tool set: the behavior workspace.
|
||||
/// Run after navigation/adoption, never as a model or property edit. Keeping
|
||||
/// selection and its Draft intact also preserves unrelated raw properties.
|
||||
pub(super) fn route_state_diagram_workspace(&mut self) {
|
||||
if self.page != Page::Diagram {
|
||||
return;
|
||||
}
|
||||
let Some((diagram, machine, layer)) = self.active_diagram.and_then(|id| {
|
||||
let view = self.project().diagrams.get(&id)?;
|
||||
Some((id, view.projection.state_machine()?, view.layer))
|
||||
}) else {
|
||||
return;
|
||||
};
|
||||
// Existing navigation guards own pending behavior forms. Never replace
|
||||
// their owner/camera if an exceptional caller leaves one on another page.
|
||||
if self.behavior.has_pending() {
|
||||
return;
|
||||
}
|
||||
self.layer = layer;
|
||||
self.page = Page::Behavior;
|
||||
self.behavior.active_owner = Some(machine);
|
||||
self.behavior.diagram = behavior::state_view::State {
|
||||
diagram: Some(diagram),
|
||||
placement: self.project().diagrams[&diagram]
|
||||
.nodes
|
||||
.values()
|
||||
.find(|node| node.id == self.selected || node.element == self.selected)
|
||||
.map(|node| node.id),
|
||||
..Default::default()
|
||||
};
|
||||
self.selected_node = None;
|
||||
self.canvas_epoch = self.canvas_epoch.wrapping_add(1);
|
||||
self.fit_state_diagram();
|
||||
}
|
||||
|
||||
/// The behavior view resolved independently of the current page. Capture
|
||||
/// this before selection/layer changes, while it still identifies the view
|
||||
/// whose camera and tool are retained during navigation.
|
||||
|
||||
Reference in New Issue
Block a user