shell: Moved minimized windows should stay minimized
This commit is contained in:
parent
5fc5a223c7
commit
7e63b99cd5
1 changed files with 38 additions and 1 deletions
|
|
@ -3017,8 +3017,9 @@ impl Shell {
|
||||||
) -> Option<(KeyboardFocusTarget, Point<i32, Global>)> {
|
) -> Option<(KeyboardFocusTarget, Point<i32, Global>)> {
|
||||||
let from_output = self.workspaces.space_for_handle(from)?.output.clone();
|
let from_output = self.workspaces.space_for_handle(from)?.output.clone();
|
||||||
let to_output = self.workspaces.space_for_handle(to)?.output.clone();
|
let to_output = self.workspaces.space_for_handle(to)?.output.clone();
|
||||||
|
|
||||||
let from_workspace = self.workspaces.space_for_handle_mut(from).unwrap(); // checked above
|
let from_workspace = self.workspaces.space_for_handle_mut(from).unwrap(); // checked above
|
||||||
|
|
||||||
|
let is_minimized = window.is_minimized();
|
||||||
let mut window_state = from_workspace.unmap_surface(window)?.1;
|
let mut window_state = from_workspace.unmap_surface(window)?.1;
|
||||||
|
|
||||||
toplevel_leave_workspace(window, from);
|
toplevel_leave_workspace(window, from);
|
||||||
|
|
@ -3043,6 +3044,42 @@ impl Shell {
|
||||||
*workspace = *to;
|
*workspace = *to;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if is_minimized {
|
||||||
|
let to_workspace = self.workspaces.space_for_handle_mut(to).unwrap(); // checked above
|
||||||
|
let minimized_window = match window_state {
|
||||||
|
WorkspaceRestoreData::Floating(Some(previous)) => {
|
||||||
|
let window = CosmicMapped::from(CosmicWindow::new(
|
||||||
|
window.clone(),
|
||||||
|
evlh.clone(),
|
||||||
|
self.theme.clone(),
|
||||||
|
));
|
||||||
|
window.set_minimized(true);
|
||||||
|
MinimizedWindow::Floating { window, previous }
|
||||||
|
}
|
||||||
|
WorkspaceRestoreData::Tiling(Some(previous)) => {
|
||||||
|
let window = CosmicMapped::from(CosmicWindow::new(
|
||||||
|
window.clone(),
|
||||||
|
evlh.clone(),
|
||||||
|
self.theme.clone(),
|
||||||
|
));
|
||||||
|
window.set_minimized(true);
|
||||||
|
MinimizedWindow::Tiling { window, previous }
|
||||||
|
}
|
||||||
|
WorkspaceRestoreData::Fullscreen(previous) => {
|
||||||
|
window.set_minimized(true);
|
||||||
|
MinimizedWindow::Fullscreen {
|
||||||
|
surface: window.clone(),
|
||||||
|
previous,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
unreachable!()
|
||||||
|
} // MinimizedWindow always has restore data
|
||||||
|
};
|
||||||
|
to_workspace.minimized_windows.push(minimized_window);
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
for mapped in from_workspace
|
for mapped in from_workspace
|
||||||
.mapped()
|
.mapped()
|
||||||
.cloned()
|
.cloned()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue