fix(client/windows): the settings surface fills the window again

The redesign left the page rooted in a vstack, and a StackPanel hands its child the
DESIRED height — the NavigationView was clipped in a short window and floated in a tall
one. The nav, the Edit-profile scrim and the delete ContentDialog now share one grid, so
every layer stretches with the window (the dialog is its own WinUI layer and only needs
to be in the tree).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-29 18:31:48 +02:00
co-authored by Claude Fable 5
parent 6b956a2bf4
commit 1c1b81133c
+7 -5
View File
@@ -1448,8 +1448,11 @@ pub(crate) fn settings_page(
let ss = set_screen.clone();
move || ss.call(Screen::Hosts)
});
// The Edit-profile modal overlays the whole NavigationView (scrim + card), and the delete
// confirmation — a ContentDialog, so its own WinUI layer — can sit above either.
// One grid, so every layer FILLS the window (a vstack would hand the NavigationView its
// desired height — clipped when the window is short, floating when it is tall): the nav,
// the Edit-profile scrim + card over it, and the delete confirmation (a ContentDialog,
// its own WinUI layer, so its slot in the cell is irrelevant — it just needs to be in
// the tree).
let mut layers: Vec<Element> = vec![nav.into()];
if edit_open {
if let Some(p) = &active {
@@ -1458,9 +1461,8 @@ pub(crate) fn settings_page(
));
}
}
let mut surface: Vec<Element> = vec![grid(layers).into()];
if let Some(dialog) = confirm {
surface.push(dialog);
layers.push(dialog);
}
vstack(surface).into()
grid(layers).into()
}