interactive: allow moving horizontally/vertically maximized window

Applies drag resistance unidirectionally for horizontally/vertically
maximized windows, allowing them to be dragged without being untiled
immediately. When the distance of cursor movement orthogonal to the
maximized direction exceeds <resistance><unMaximizeThreshold>.

While dragging a horizontally/vertically maximized window, edge/region
snapping is disabled to prevent unintentional snapping and overlays.

This commit also includes some refactoring to simplify the logic.
This commit is contained in:
tokyo4j 2024-08-07 09:17:25 +09:00 committed by Consolatis
parent 2e19bd4d5b
commit 1f1bdad087
11 changed files with 137 additions and 120 deletions

View file

@ -20,7 +20,8 @@ regions_should_snap(struct server *server)
{
if (server->input_mode != LAB_INPUT_STATE_MOVE
|| wl_list_empty(&rc.regions)
|| server->seat.region_prevent_snap) {
|| server->seat.region_prevent_snap
|| !view_is_floating(server->grabbed_view)) {
return false;
}