shell: Also restore stack element on sticky layer to stack

This commit is contained in:
Ian Douglas Scott 2026-06-23 15:04:39 -07:00 committed by Ian Douglas Scott
parent 5c0c22988e
commit 98e1dd7f6b

View file

@ -4807,11 +4807,18 @@ impl Shell {
{
let mut from = set.sticky_layer.element_geometry(&mapped).unwrap();
let mut was_maximized = false;
let mut restore_state = None;
window = if let Some(stack) = mapped.stack_ref()
&& stack.len() > 1
{
let surface = stack.surfaces().find(|s| s == surface).unwrap();
stack.remove_window(&surface);
let idx = stack.surfaces().position(|s| &s == surface)?;
let surface = stack.remove_idx(idx)?;
restore_state = Some(FullscreenRestoreState::Stack {
state: StackRestoreData {
stack: mapped.key(),
idx,
},
});
surface
} else {
// Must be set before `map_internal`/`unmap` below, as both may call
@ -4844,7 +4851,7 @@ impl Shell {
workspace.map_fullscreen(
&window,
&seat,
Some(FullscreenRestoreState::Sticky {
Some(restore_state.unwrap_or(FullscreenRestoreState::Sticky {
output: old_output,
state: FloatingRestoreData {
geometry: from,
@ -4852,7 +4859,7 @@ impl Shell {
was_maximized,
was_snapped: None,
},
}),
})),
Some(from),
);
} else if let Some(workspace) = self.space_for_mut(&mapped) {