Preserve scenario viewport when editing a diagram message
This commit is contained in:
@@ -1221,8 +1221,11 @@ pub fn view<'a>(app: &'a App, owner: Id, mut out: Column<'a, Message>) -> Elemen
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
let pending = app.behavior.has_pending();
|
let pending = app.behavior.has_pending();
|
||||||
|
// Keep the canvas at a stable widget-tree position when a form replaces
|
||||||
|
// the palette, so Iced retains the user's current sequence viewport.
|
||||||
|
let mut controls = column![].spacing(12);
|
||||||
if !pending {
|
if !pending {
|
||||||
out = out
|
controls = controls
|
||||||
.push(
|
.push(
|
||||||
row![
|
row![
|
||||||
action("+ Lifeline", event(Event::Start(owner, Tool::Lifeline))),
|
action("+ Lifeline", event(Event::Start(owner, Tool::Lifeline))),
|
||||||
@@ -1252,7 +1255,7 @@ pub fn view<'a>(app: &'a App, owner: Id, mut out: Column<'a, Message>) -> Elemen
|
|||||||
MessageStyle::CallReply
|
MessageStyle::CallReply
|
||||||
};
|
};
|
||||||
if !pending {
|
if !pending {
|
||||||
out = out.push(
|
controls = controls.push(
|
||||||
row![
|
row![
|
||||||
button("Select / reorder")
|
button("Select / reorder")
|
||||||
.on_press(Message::ScenarioCanvas(CanvasEvent::Choose(
|
.on_press(Message::ScenarioCanvas(CanvasEvent::Choose(
|
||||||
@@ -1296,14 +1299,15 @@ pub fn view<'a>(app: &'a App, owner: Id, mut out: Column<'a, Message>) -> Elemen
|
|||||||
]
|
]
|
||||||
.spacing(6),
|
.spacing(6),
|
||||||
);
|
);
|
||||||
out = out.push(label(if matches!(tool, CanvasTool::Message(_)) {
|
controls = controls.push(label(if matches!(tool, CanvasTool::Message(_)) {
|
||||||
"Draw message · choose the highlighted sequence position on a lifeline, then click or drag to another lifeline · Escape cancels"
|
"Draw message · choose the highlighted sequence position on a lifeline, then click or drag to another lifeline · Escape cancels"
|
||||||
} else { "Select a lifeline or occurrence · drag the selected occurrence’s ↕ handle to reorder within its sequence" }));
|
} else { "Select a lifeline or occurrence · drag the selected occurrence’s ↕ handle to reorder within its sequence" }));
|
||||||
} else {
|
} else {
|
||||||
out = out.push(label(
|
controls = controls.push(label(
|
||||||
"Pending form · the canvas remains visible · apply or cancel below",
|
"Pending form · the canvas remains visible · apply or cancel below",
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
out = out.push(controls);
|
||||||
let mut scene = Scene::sequence(p, owner, app.selected);
|
let mut scene = Scene::sequence(p, owner, app.selected);
|
||||||
scene.interaction = Some((
|
scene.interaction = Some((
|
||||||
context,
|
context,
|
||||||
|
|||||||
+13
-4
@@ -204,12 +204,21 @@ logs desktop{-clippy,-release}-dfd2e41.log in Linux target/linux-verification.
|
|||||||
Semantic core/source5 checkpoint346fb24 passed345 core tests (one intentional
|
Semantic core/source5 checkpoint346fb24 passed345 core tests (one intentional
|
||||||
ignored probe) and strict Clippy; independent nine-finding recheck is closed.
|
ignored probe) and strict Clippy; independent nine-finding recheck is closed.
|
||||||
Semantic checkout server test checkpointc746ab6 passes42 existing server tests
|
Semantic checkout server test checkpointc746ab6 passes42 existing server tests
|
||||||
and strict Clippy after seven current-output assertions changed to5. Semantic API
|
and strict Clippy after seven current-output assertions changed to5. User explicitly reconfirmed REST work after two automatic review rejections.
|
||||||
production additions were rejected twice by automatic approval review; a direct
|
The scoped retry is approved; semantic query/preview/apply and HTTP tests are
|
||||||
authorization question is pending. No API route bodies were retained. Spec work
|
implemented, with independent transport review and schema validation active.
|
||||||
continues independently. Process direct editing is active in codex/process-direct.
|
Normative source5 spec02f99a9 passed strict generation and extracted examples;
|
||||||
|
independent no-op-guarantee finding was fixed in29df024. Process direct editing is active in codex/process-direct.
|
||||||
|
|
||||||
Next: verify scenario UI fixes on Windows/Linux; integrate semantic core/source,
|
Next: verify scenario UI fixes on Windows/Linux; integrate semantic core/source,
|
||||||
spec and authorized API; implement semantic GUI; integrate direct process editing.
|
spec and authorized API; implement semantic GUI; integrate direct process editing.
|
||||||
Broader coverage/lifecycle/hosted/help/release gates in PLAN remain active. Main
|
Broader coverage/lifecycle/hosted/help/release gates in PLAN remain active. Main
|
||||||
is4101434 (docs pointer on productiona8f451e); this integration is not yet accepted.
|
is4101434 (docs pointer on productiona8f451e); this integration is not yet accepted.
|
||||||
|
|
||||||
|
Latest native refinement c6c07cc: pinned actions/mode feedback/names pass normal
|
||||||
|
and compact Windows inspection. Native ALT creation, operand pair insertion,
|
||||||
|
correlation spans, invalid order, Save/Undo/Redo passed (saved62 objects). Canvas
|
||||||
|
remount on entering/leaving forms loses the viewed region; stable controls sibling
|
||||||
|
fix is being verified next. Exact evidence is in release-scenario-editing.md.
|
||||||
|
Linux287 tests/strict Clippy/release passed c6c07cc. Process7a1e12b passes303 desktop
|
||||||
|
tests; independent Exchange-first continuation finding is being fixed by worker.
|
||||||
|
|||||||
@@ -256,3 +256,28 @@ inner and outer scrolling. Root is refining those three issues before accepting
|
|||||||
the milestone. ALT/reuse/resize/save recovery and Linux native remain pending.
|
the milestone. ALT/reuse/resize/save recovery and Linux native remain pending.
|
||||||
|
|
||||||
Root UI refinement checks:287 desktop tests passed, strict all-target desktop Clippy passed, optimized Windows desktop build passed. Native verification of this refinement remains pending.
|
Root UI refinement checks:287 desktop tests passed, strict all-target desktop Clippy passed, optimized Windows desktop build passed. Native verification of this refinement remains pending.
|
||||||
|
|
||||||
|
|
||||||
|
## Refined Windows native results and viewport finding
|
||||||
|
|
||||||
|
c6c07cc Windows frozen binary SHA256
|
||||||
|
4A49AD95C466BACBD1D1EA96FFF983BDA2F5DA9B7DCCBF91C387655CEF88B419,
|
||||||
|
ui-scenario-refined-windows. Native1440x900 and1100x700 show differentiated tool
|
||||||
|
selection, occurrence-first message names and pinned Create/Cancel. A pending
|
||||||
|
Navigation outcome ALT fragment retained its name and route.available guard across
|
||||||
|
width/height resizing. Create produced the fragment and two operands. Native
|
||||||
|
click-click in its first operand explicitly captured that operand's append slot;
|
||||||
|
Available route plus correlated Reply were created on Navigation request. Execution
|
||||||
|
bar ends at that reply. Reply-before-call reorder rejects with reply_order. Save
|
||||||
|
All writes62 objects/5 links/3 checks; exact nested source shows the guarded operand
|
||||||
|
contains only that correlated pair. Undo removes both (60); Redo restores saved62.
|
||||||
|
The saved native trial was closed before the next refinement.
|
||||||
|
|
||||||
|
Native also found the canvas jumps to its start whenever the palette is replaced
|
||||||
|
by a form or restored. Diagnosis: conditional siblings change its Iced widget-tree
|
||||||
|
position. Group the controls as one stable sibling and verify that actual viewport
|
||||||
|
is retained across drawing/form/cancel/create. This is distinct from deliberate
|
||||||
|
new-selection reveal (not implemented yet). Linux287 tests, strict Clippy and
|
||||||
|
optimized build pass for c6c07cc; native Linux remains pending.
|
||||||
|
|
||||||
|
Stable-canvas refinement:287 desktop tests, strict all-target Clippy and optimized Windows build passed. Native retention trial remains pending.
|
||||||
|
|||||||
Reference in New Issue
Block a user