aboutsummaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
Diffstat (limited to 'sway')
-rw-r--r--sway/input/cursor.c17
-rw-r--r--sway/input/seat.c19
-rw-r--r--sway/tree/container.c3
3 files changed, 21 insertions, 18 deletions
diff --git a/sway/input/cursor.c b/sway/input/cursor.c
index 8b9208c6..ec83746e 100644
--- a/sway/input/cursor.c
+++ b/sway/input/cursor.c
@@ -427,21 +427,6 @@ static void handle_cursor_motion_absolute(
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,
uint32_t time_msec, uint32_t button, enum wlr_button_state state,
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) {
if (cursor->seat->operation != OP_NONE &&
button == cursor->seat->op_button && state == WLR_BUTTON_RELEASED) {
- handle_end_operation(cursor->seat);
+ seat_end_mouse_operation(cursor->seat);
return;
}
if (time_msec == 0) {
diff --git a/sway/input/seat.c b/sway/input/seat.c
index cc5b2e0f..3a3350e1 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -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_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;
+}
diff --git a/sway/tree/container.c b/sway/tree/container.c
index ba4af352..42c1d024 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -1114,8 +1114,7 @@ void container_end_mouse_operation(struct sway_container *container) {
struct sway_seat *seat;
wl_list_for_each(seat, &input_manager->seats, link) {
if (seat->op_container == container) {
- seat->op_container = NULL;
- seat->operation = OP_NONE;
+ seat_end_mouse_operation(seat);
}
}
}