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