Bound Process payload sizes and capture rendered order feedback

Box the optional Process menu context and changed order command without changing identity or command semantics. Add opt-in actual WGPU readbacks to the split-event OA/SA reorder evaluator. Strict all-target lint, format and affected desktop paths pass; native acceptance follows.
This commit is contained in:
2026-09-23 05:47:08 -07:00
parent 1711bff650
commit b15345123a
11 changed files with 74 additions and 23 deletions
+7 -5
View File
@@ -18,7 +18,7 @@ pub struct Request {
pub route_segment: Option<(usize, Position)>,
pub creation_point: Option<Position>,
pub canvas: Option<route_edit::Context>,
pub process: Option<crate::behavior::topology::Context>,
pub process: Option<Box<crate::behavior::topology::Context>>,
pub source_file: Option<String>,
}
impl Request {
@@ -65,7 +65,8 @@ impl Opened {
.is_some_and(|c| Some(c) != current_canvas(app))
|| request
.process
.is_some_and(|c| Some(c) != app.topology_context())
.as_deref()
.is_some_and(|c| Some(*c) != app.topology_context())
{
return None;
}
@@ -96,7 +97,8 @@ impl Opened {
&& self
.request
.process
.is_none_or(|c| Some(c) == app.topology_context())
.as_deref()
.is_none_or(|c| Some(*c) == app.topology_context())
&& self
.request
.source_file
@@ -181,7 +183,7 @@ pub fn trigger(app: &App) -> iced::Element<'_, Message> {
request.canvas = app.route_context();
} else if app.page == Page::Behavior {
request.canvas = app.state_context();
request.process = app.topology_context();
request.process = app.topology_context().map(Box::new);
if let Some(target) = app.diagram_selection.as_ref().and_then(|s| s.primary()) {
request.selection_target = Some(Box::new(target.clone()));
request.placement = match target {
@@ -362,7 +364,7 @@ pub fn popup(app: &App) -> Option<Menu<Message>> {
});
}
entries.push(Entry::separator());
if let Some(context) = request.process {
if let Some(context) = request.process.as_deref().copied() {
let endpoint = match request.selection_target.as_deref() {
Some(Target::ProcessOccurrence(endpoint))
if !endpoint.references.is_empty() =>