diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-07-24 20:16:54 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-07-24 20:20:00 +1000 |
commit | e7c10f1871ba64c234ff1df22828ca84ad28c67e (patch) | |
tree | 0ad866d4449bb374eedd624aaacdd8bebba0e4d6 | |
parent | Merge pull request #2303 from frsfnrrg/mouse-bindings (diff) | |
download | sway-e7c10f1871ba64c234ff1df22828ca84ad28c67e.tar.gz sway-e7c10f1871ba64c234ff1df22828ca84ad28c67e.tar.zst sway-e7c10f1871ba64c234ff1df22828ca84ad28c67e.zip |
Make mod+resize work in any direction
This makes it so if you hold mod and right click on a surface to resize
it, the resize direction is chosen based on which quarter of the surface
you've clicked. The previous implementation only resized towards the
bottom right.
-rw-r--r-- | sway/input/cursor.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sway/input/cursor.c b/sway/input/cursor.c index f1481936..8a6299cf 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c | |||
@@ -460,6 +460,12 @@ static void dispatch_cursor_button_floating(struct sway_cursor *cursor, | |||
460 | bool resizing_via_mod = button == BTN_RIGHT && mod_pressed; | 460 | bool resizing_via_mod = button == BTN_RIGHT && mod_pressed; |
461 | if ((resizing_via_border || resizing_via_mod) && | 461 | if ((resizing_via_border || resizing_via_mod) && |
462 | state == WLR_BUTTON_PRESSED) { | 462 | state == WLR_BUTTON_PRESSED) { |
463 | if (edge == WLR_EDGE_NONE) { | ||
464 | edge |= cursor->cursor->x > cont->x + cont->width / 2 ? | ||
465 | WLR_EDGE_RIGHT : WLR_EDGE_LEFT; | ||
466 | edge |= cursor->cursor->y > cont->y + cont->height / 2 ? | ||
467 | WLR_EDGE_BOTTOM : WLR_EDGE_TOP; | ||
468 | } | ||
463 | seat_begin_resize(seat, cont, button, edge); | 469 | seat_begin_resize(seat, cont, button, edge); |
464 | return; | 470 | return; |
465 | } | 471 | } |