From d46ed304b80cd0bdb5e5b158c60c637cd9ff61ae Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Wed, 26 Mar 2025 18:24:33 +0100 Subject: [PATCH] shell: Unmaximize when moving a single window to another tiling layer --- src/shell/mod.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 4bc58291..ddaac71e 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -2591,10 +2591,19 @@ impl Shell { let any_seat = seat.unwrap_or(self.seats.last_active()).clone(); let mut to_workspace = self.workspaces.space_for_handle_mut(to).unwrap(); // checked above - let focus_stack = seat.map(|seat| to_workspace.focus_stack.get(&seat)); if window_state.layer == ManagedLayer::Floating || !to_workspace.tiling_enabled { to_workspace.floating_layer.map(mapped.clone(), None); } else { + for mapped in to_workspace + .mapped() + .filter(|m| m.maximized_state.lock().unwrap().is_some()) + .cloned() + .collect::>() + .into_iter() + { + to_workspace.unmaximize_request(&mapped); + } + let focus_stack = seat.map(|seat| to_workspace.focus_stack.get(&seat)); to_workspace.tiling_layer.map( mapped.clone(), focus_stack.as_ref().map(|x| x.iter()),