shell: Also restore stack element on sticky layer to stack
This commit is contained in:
parent
5c0c22988e
commit
98e1dd7f6b
1 changed files with 11 additions and 4 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue