Skip to content

Commit 261134d

Browse files
committed
shell: Correctly track was_maximized for fullscreened sticky windows
1 parent 54e76d5 commit 261134d

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/shell/mod.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4496,7 +4496,8 @@ impl Shell {
44964496
.iter_mut()
44974497
.find(|(_, set)| set.sticky_layer.mapped().any(|m| m == &mapped))
44984498
{
4499-
let from = set.sticky_layer.element_geometry(&mapped).unwrap();
4499+
let mut from = set.sticky_layer.element_geometry(&mapped).unwrap();
4500+
let mut was_maximized = false;
45004501
window = if mapped
45014502
.stack_ref()
45024503
.map(|stack| stack.len() > 1)
@@ -4507,7 +4508,18 @@ impl Shell {
45074508
stack.remove_window(&surface);
45084509
surface
45094510
} else {
4510-
set.sticky_layer.unmap(&mapped, None);
4511+
if let Some(state) = mapped.maximized_state.lock().unwrap().take() {
4512+
mapped.set_maximized(false);
4513+
set.sticky_layer.map_internal(
4514+
mapped.clone(),
4515+
Some(state.original_geometry.loc),
4516+
Some(state.original_geometry.size.as_logical()),
4517+
None,
4518+
);
4519+
was_maximized = true;
4520+
}
4521+
4522+
from = set.sticky_layer.unmap(&mapped, None).unwrap();
45114523
mapped.active_window()
45124524
};
45134525

@@ -4526,7 +4538,7 @@ impl Shell {
45264538
state: FloatingRestoreData {
45274539
geometry: from,
45284540
output_size: workspace.output.geometry().size.as_logical(),
4529-
was_maximized: false,
4541+
was_maximized,
45304542
},
45314543
}),
45324544
Some(from),

0 commit comments

Comments
 (0)