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.
This commit is contained in:
Ryan Dwyer 2018-07-24 20:16:54 +10:00
parent 1a9179dbab
commit e7c10f1871

View file

@ -460,6 +460,12 @@ static void dispatch_cursor_button_floating(struct sway_cursor *cursor,
bool resizing_via_mod = button == BTN_RIGHT && mod_pressed; bool resizing_via_mod = button == BTN_RIGHT && mod_pressed;
if ((resizing_via_border || resizing_via_mod) && if ((resizing_via_border || resizing_via_mod) &&
state == WLR_BUTTON_PRESSED) { state == WLR_BUTTON_PRESSED) {
if (edge == WLR_EDGE_NONE) {
edge |= cursor->cursor->x > cont->x + cont->width / 2 ?
WLR_EDGE_RIGHT : WLR_EDGE_LEFT;
edge |= cursor->cursor->y > cont->y + cont->height / 2 ?
WLR_EDGE_BOTTOM : WLR_EDGE_TOP;
}
seat_begin_resize(seat, cont, button, edge); seat_begin_resize(seat, cont, button, edge);
return; return;
} }