shell: Preserve maximized/snapped state on move between workspaces
This commit is contained in:
parent
4565514e76
commit
244111330b
1 changed files with 23 additions and 5 deletions
|
|
@ -3349,13 +3349,31 @@ impl Shell {
|
||||||
|
|
||||||
let to_workspace = self.workspaces.space_for_handle_mut(to).unwrap(); // checked above
|
let to_workspace = self.workspaces.space_for_handle_mut(to).unwrap(); // checked above
|
||||||
if !to_workspace.tiling_enabled {
|
if !to_workspace.tiling_enabled {
|
||||||
let position = match window_state {
|
let (position, was_maximized, was_snapped) = match &window_state {
|
||||||
WorkspaceRestoreData::Floating(Some(data)) => {
|
WorkspaceRestoreData::Floating(Some(data)) => (
|
||||||
Some(data.position_relative(to_workspace.output.geometry().size.as_logical()))
|
Some(data.position_relative(to_workspace.output.geometry().size.as_logical())),
|
||||||
}
|
data.was_maximized,
|
||||||
_ => None,
|
data.was_snapped,
|
||||||
|
),
|
||||||
|
_ => (None, false, None),
|
||||||
};
|
};
|
||||||
to_workspace.floating_layer.map(mapped.clone(), position);
|
to_workspace.floating_layer.map(mapped.clone(), position);
|
||||||
|
if was_maximized {
|
||||||
|
let geometry = to_workspace.floating_layer.element_geometry(mapped).unwrap();
|
||||||
|
*mapped.maximized_state.lock().unwrap() = Some(MaximizedState {
|
||||||
|
original_geometry: geometry,
|
||||||
|
original_layer: ManagedLayer::Floating,
|
||||||
|
});
|
||||||
|
to_workspace
|
||||||
|
.floating_layer
|
||||||
|
.map_maximized(mapped.clone(), geometry, false);
|
||||||
|
} else if let Some(corners) = was_snapped {
|
||||||
|
*mapped.floating_tiled.lock().unwrap() = Some(corners);
|
||||||
|
mapped.set_tiled(true);
|
||||||
|
let snapped_geo = to_workspace.floating_layer.snapped_geometry(&corners);
|
||||||
|
mapped.set_geometry(snapped_geo.to_global(&to_workspace.output));
|
||||||
|
mapped.configure();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
for mapped in to_workspace
|
for mapped in to_workspace
|
||||||
.mapped()
|
.mapped()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue