Replace static handle_end_operation with seat_end_mouse_operation

This commit is contained in:
Ryan Dwyer 2018-07-21 10:40:12 +10:00
parent 86f5531511
commit 0c87bff5d1
4 changed files with 23 additions and 18 deletions

View File

@ -155,4 +155,6 @@ void seat_begin_move(struct sway_seat *seat, struct sway_container *con);
void seat_begin_resize(struct sway_seat *seat, struct sway_container *con, void seat_begin_resize(struct sway_seat *seat, struct sway_container *con,
uint32_t button, enum wlr_edges edge); uint32_t button, enum wlr_edges edge);
void seat_end_mouse_operation(struct sway_seat *seat);
#endif #endif

View File

@ -427,21 +427,6 @@ static void handle_cursor_motion_absolute(
transaction_commit_dirty(); transaction_commit_dirty();
} }
static void handle_end_operation(struct sway_seat *seat) {
if (seat->operation == OP_MOVE) {
// We "move" the container to its own location so it discovers its
// output again.
struct sway_container *con = seat->op_container;
container_floating_move_to(con, con->x, con->y);
seat->operation = OP_NONE;
seat->op_container = NULL;
} else {
// OP_RESIZE
seat->operation = OP_NONE;
seat->op_container = NULL;
}
}
static void dispatch_cursor_button_floating(struct sway_cursor *cursor, static void dispatch_cursor_button_floating(struct sway_cursor *cursor,
uint32_t time_msec, uint32_t button, enum wlr_button_state state, uint32_t time_msec, uint32_t button, enum wlr_button_state state,
struct wlr_surface *surface, double sx, double sy, struct wlr_surface *surface, double sx, double sy,
@ -484,7 +469,7 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
uint32_t time_msec, uint32_t button, enum wlr_button_state state) { uint32_t time_msec, uint32_t button, enum wlr_button_state state) {
if (cursor->seat->operation != OP_NONE && if (cursor->seat->operation != OP_NONE &&
button == cursor->seat->op_button && state == WLR_BUTTON_RELEASED) { button == cursor->seat->op_button && state == WLR_BUTTON_RELEASED) {
handle_end_operation(cursor->seat); seat_end_mouse_operation(cursor->seat);
return; return;
} }
if (time_msec == 0) { if (time_msec == 0) {

View File

@ -932,3 +932,22 @@ void seat_begin_resize(struct sway_seat *seat, struct sway_container *con,
seat->op_ref_width = con->width; seat->op_ref_width = con->width;
seat->op_ref_height = con->height; seat->op_ref_height = con->height;
} }
void seat_end_mouse_operation(struct sway_seat *seat) {
switch (seat->operation) {
case OP_MOVE:
{
// We "move" the container to its own location so it discovers its
// output again.
struct sway_container *con = seat->op_container;
container_floating_move_to(con, con->x, con->y);
}
case OP_RESIZE:
// Don't need to do anything here.
break;
case OP_NONE:
break;
}
seat->operation = OP_NONE;
seat->op_container = NULL;
}

View File

@ -1114,8 +1114,7 @@ void container_end_mouse_operation(struct sway_container *container) {
struct sway_seat *seat; struct sway_seat *seat;
wl_list_for_each(seat, &input_manager->seats, link) { wl_list_for_each(seat, &input_manager->seats, link) {
if (seat->op_container == container) { if (seat->op_container == container) {
seat->op_container = NULL; seat_end_mouse_operation(seat);
seat->operation = OP_NONE;
} }
} }
} }