Refactor seat operations to use an interface

This splits each seat operation (drag/move tiling/floating etc) into a
separate file and introduces a struct sway_seatop_impl to abstract the
operation.

The move_tiling_threshold operation has been merged into move_tiling.

The main logic for each operation is untouched aside from variable
renames.

The following previously-static functions have been made public:
* node_at_coords
* container_raise_floating
* render_rect
* premultiply_alpha
* scale_box
This commit is contained in:
Ryan Dwyer 2019-01-10 22:04:42 +10:00
parent 15ac580b28
commit ed5aafd90b
19 changed files with 924 additions and 646 deletions

View file

@ -470,7 +470,7 @@ static void handle_request_move(struct wl_listener *listener, void *data) {
return;
}
struct sway_seat *seat = input_manager_current_seat();
seat_begin_move_floating(seat, view->container, seat->last_button);
seatop_begin_move_floating(seat, view->container, seat->last_button);
}
static void handle_request_resize(struct wl_listener *listener, void *data) {
@ -486,7 +486,7 @@ static void handle_request_resize(struct wl_listener *listener, void *data) {
}
struct wlr_xwayland_resize_event *e = data;
struct sway_seat *seat = input_manager_current_seat();
seat_begin_resize_floating(seat, view->container,
seatop_begin_resize_floating(seat, view->container,
seat->last_button, e->edges);
}