mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-07-08 05:55:09 +02:00
fix(wm): ensure moves to floating workspaces
This commit ensures that windows moved to a floating workspace on a different monitor will have their positions updated accordingly for the target monitor. Since floating layouts have no layout algorithm applied, the moved window will be centered in the work_area of the target monitor in the target workspace. fix #865
This commit is contained in:
@@ -1070,6 +1070,12 @@ impl WindowManager {
|
|||||||
.remove_focused_container()
|
.remove_focused_container()
|
||||||
.ok_or_else(|| anyhow!("there is no container"))?;
|
.ok_or_else(|| anyhow!("there is no container"))?;
|
||||||
|
|
||||||
|
let container_hwnds = container
|
||||||
|
.windows()
|
||||||
|
.iter()
|
||||||
|
.map(|w| w.hwnd)
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
monitor.update_focused_workspace(offset)?;
|
monitor.update_focused_workspace(offset)?;
|
||||||
|
|
||||||
let target_monitor = self
|
let target_monitor = self
|
||||||
@@ -1083,6 +1089,14 @@ impl WindowManager {
|
|||||||
target_monitor.focus_workspace(workspace_idx)?;
|
target_monitor.focus_workspace(workspace_idx)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(workspace) = target_monitor.focused_workspace() {
|
||||||
|
if !*workspace.tile() {
|
||||||
|
for hwnd in container_hwnds {
|
||||||
|
Window::from(hwnd).center(target_monitor.work_area_size())?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
target_monitor.load_focused_workspace(mouse_follows_focus)?;
|
target_monitor.load_focused_workspace(mouse_follows_focus)?;
|
||||||
target_monitor.update_focused_workspace(offset)?;
|
target_monitor.update_focused_workspace(offset)?;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user