fix(wm): handle cross-monitor drag/move events

This commit ensures that when a window is dragged across a monitor
boundary, the ownership of the window container will be transferred to
the target monitor's currently focused workspace.

In order to achieve this, a new WindowManagerEvent variant has been
added, MoveResizeStart, which will store an optional pending_move_op on
the WindowManager struct. This must be consumed at the beginning of the
handler for MoveResizeEnd.

This is necessary because as soon as the window is dragged across a
monitor boundary, an event is sent (and handled) to update the currently
focused monitor and workspace as the target monitor and workspace, and
we still need to have the information about the original monitor,
workspace and container in order to make comparisons and ultimately
remove the origin container to be able to transfer it.

fix #58
This commit is contained in:
LGUG2Z
2021-10-29 09:08:35 -07:00
parent 14e63292e1
commit 7fd545ca35
6 changed files with 218 additions and 11 deletions

View File

@@ -13,7 +13,7 @@ install-komorebic:
cargo +stable install --path komorebic --locked
install-komorebi:
cargo +stable install --path komorebic --locked
cargo +stable install --path komorebi --locked
install:
just install-komorebic