aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/sway/input/seat.h9
-rw-r--r--sway/input/cursor.c6
-rw-r--r--sway/input/seat.c4
-rw-r--r--sway/input/seatop_down.c9
-rw-r--r--sway/input/seatop_move_floating.c2
-rw-r--r--sway/input/seatop_move_tiling.c2
-rw-r--r--sway/input/seatop_resize_floating.c2
-rw-r--r--sway/input/seatop_resize_tiling.c2
8 files changed, 18 insertions, 18 deletions
diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h
index 8fedf797..0f5dab98 100644
--- a/include/sway/input/seat.h
+++ b/include/sway/input/seat.h
@@ -10,7 +10,7 @@ struct sway_seat;
10 10
11struct sway_seatop_impl { 11struct sway_seatop_impl {
12 void (*motion)(struct sway_seat *seat, uint32_t time_msec); 12 void (*motion)(struct sway_seat *seat, uint32_t time_msec);
13 void (*finish)(struct sway_seat *seat); 13 void (*finish)(struct sway_seat *seat, uint32_t time_msec);
14 void (*abort)(struct sway_seat *seat); 14 void (*abort)(struct sway_seat *seat);
15 void (*unref)(struct sway_seat *seat, struct sway_container *con); 15 void (*unref)(struct sway_seat *seat, struct sway_container *con);
16 void (*render)(struct sway_seat *seat, struct sway_output *output, 16 void (*render)(struct sway_seat *seat, struct sway_output *output,
@@ -185,8 +185,8 @@ bool seat_is_input_allowed(struct sway_seat *seat, struct wlr_surface *surface);
185 185
186void drag_icon_update_position(struct sway_drag_icon *icon); 186void drag_icon_update_position(struct sway_drag_icon *icon);
187 187
188void seatop_begin_down(struct sway_seat *seat, 188void seatop_begin_down(struct sway_seat *seat, struct sway_container *con,
189 struct sway_container *con, uint32_t button, int sx, int sy); 189 uint32_t time_msec, uint32_t button, int sx, int sy);
190 190
191void seatop_begin_move_floating(struct sway_seat *seat, 191void seatop_begin_move_floating(struct sway_seat *seat,
192 struct sway_container *con, uint32_t button); 192 struct sway_container *con, uint32_t button);
@@ -218,7 +218,7 @@ void seatop_motion(struct sway_seat *seat, uint32_t time_msec);
218/** 218/**
219 * End a seatop and apply the affects. 219 * End a seatop and apply the affects.
220 */ 220 */
221void seatop_finish(struct sway_seat *seat); 221void seatop_finish(struct sway_seat *seat, uint32_t time_msec);
222 222
223/** 223/**
224 * End a seatop without applying the affects. 224 * End a seatop without applying the affects.
@@ -239,5 +239,4 @@ void seatop_unref(struct sway_seat *seat, struct sway_container *con);
239void seatop_render(struct sway_seat *seat, struct sway_output *output, 239void seatop_render(struct sway_seat *seat, struct sway_output *output,
240 pixman_region32_t *damage); 240 pixman_region32_t *damage);
241 241
242
243#endif 242#endif
diff --git a/sway/input/cursor.c b/sway/input/cursor.c
index 87811550..44b5ff14 100644
--- a/sway/input/cursor.c
+++ b/sway/input/cursor.c
@@ -606,8 +606,7 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
606 // Handle existing seat operation 606 // Handle existing seat operation
607 if (seat_doing_seatop(seat)) { 607 if (seat_doing_seatop(seat)) {
608 if (button == seat->seatop_button && state == WLR_BUTTON_RELEASED) { 608 if (button == seat->seatop_button && state == WLR_BUTTON_RELEASED) {
609 seatop_finish(seat); 609 seatop_finish(seat, time_msec);
610 seat_pointer_notify_button(seat, time_msec, button, state);
611 } 610 }
612 if (state == WLR_BUTTON_PRESSED) { 611 if (state == WLR_BUTTON_PRESSED) {
613 state_add_button(cursor, button); 612 state_add_button(cursor, button);
@@ -784,8 +783,7 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
784 // Handle mousedown on a container surface 783 // Handle mousedown on a container surface
785 if (surface && cont && state == WLR_BUTTON_PRESSED) { 784 if (surface && cont && state == WLR_BUTTON_PRESSED) {
786 seat_set_focus_container(seat, cont); 785 seat_set_focus_container(seat, cont);
787 seat_pointer_notify_button(seat, time_msec, button, state); 786 seatop_begin_down(seat, cont, time_msec, button, sx, sy);
788 seatop_begin_down(seat, cont, button, sx, sy);
789 return; 787 return;
790 } 788 }
791 789
diff --git a/sway/input/seat.c b/sway/input/seat.c
index a16d3f27..9888ddfc 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -1211,9 +1211,9 @@ void seatop_motion(struct sway_seat *seat, uint32_t time_msec) {
1211 } 1211 }
1212} 1212}
1213 1213
1214void seatop_finish(struct sway_seat *seat) { 1214void seatop_finish(struct sway_seat *seat, uint32_t time_msec) {
1215 if (seat->seatop_impl && seat->seatop_impl->finish) { 1215 if (seat->seatop_impl && seat->seatop_impl->finish) {
1216 seat->seatop_impl->finish(seat); 1216 seat->seatop_impl->finish(seat, time_msec);
1217 } 1217 }
1218 free(seat->seatop_data); 1218 free(seat->seatop_data);
1219 seat->seatop_data = NULL; 1219 seat->seatop_data = NULL;
diff --git a/sway/input/seatop_down.c b/sway/input/seatop_down.c
index c2256c9a..33f9b31a 100644
--- a/sway/input/seatop_down.c
+++ b/sway/input/seatop_down.c
@@ -24,7 +24,7 @@ static void handle_motion(struct sway_seat *seat, uint32_t time_msec) {
24 e->moved = true; 24 e->moved = true;
25} 25}
26 26
27static void handle_finish(struct sway_seat *seat) { 27static void handle_finish(struct sway_seat *seat, uint32_t time_msec) {
28 struct seatop_down_event *e = seat->seatop_data; 28 struct seatop_down_event *e = seat->seatop_data;
29 struct sway_cursor *cursor = seat->cursor; 29 struct sway_cursor *cursor = seat->cursor;
30 // Set the cursor's previous coords to the x/y at the start of the 30 // Set the cursor's previous coords to the x/y at the start of the
@@ -40,6 +40,8 @@ static void handle_finish(struct sway_seat *seat) {
40 cursor->cursor->x, cursor->cursor->y, &surface, &sx, &sy); 40 cursor->cursor->x, cursor->cursor->y, &surface, &sx, &sy);
41 cursor_send_pointer_motion(cursor, 0, node, surface, sx, sy); 41 cursor_send_pointer_motion(cursor, 0, node, surface, sx, sy);
42 } 42 }
43 seat_pointer_notify_button(seat, time_msec,
44 seat->seatop_button, WLR_BUTTON_RELEASED);
43} 45}
44 46
45static void handle_abort(struct sway_seat *seat) { 47static void handle_abort(struct sway_seat *seat) {
@@ -60,8 +62,8 @@ static const struct sway_seatop_impl seatop_impl = {
60 .unref = handle_unref, 62 .unref = handle_unref,
61}; 63};
62 64
63void seatop_begin_down(struct sway_seat *seat, 65void seatop_begin_down(struct sway_seat *seat, struct sway_container *con,
64 struct sway_container *con, uint32_t button, int sx, int sy) { 66 uint32_t time_msec, uint32_t button, int sx, int sy) {
65 seatop_abort(seat); 67 seatop_abort(seat);
66 68
67 struct seatop_down_event *e = 69 struct seatop_down_event *e =
@@ -80,5 +82,6 @@ void seatop_begin_down(struct sway_seat *seat,
80 seat->seatop_data = e; 82 seat->seatop_data = e;
81 seat->seatop_button = button; 83 seat->seatop_button = button;
82 84
85 seat_pointer_notify_button(seat, time_msec, button, WLR_BUTTON_PRESSED);
83 container_raise_floating(con); 86 container_raise_floating(con);
84} 87}
diff --git a/sway/input/seatop_move_floating.c b/sway/input/seatop_move_floating.c
index 08e3a5a4..8a48a968 100644
--- a/sway/input/seatop_move_floating.c
+++ b/sway/input/seatop_move_floating.c
@@ -17,7 +17,7 @@ static void handle_motion(struct sway_seat *seat, uint32_t time_msec) {
17 desktop_damage_whole_container(e->con); 17 desktop_damage_whole_container(e->con);
18} 18}
19 19
20static void handle_finish(struct sway_seat *seat) { 20static void handle_finish(struct sway_seat *seat, uint32_t time_msec) {
21 struct seatop_move_floating_event *e = seat->seatop_data; 21 struct seatop_move_floating_event *e = seat->seatop_data;
22 22
23 // We "move" the container to its own location 23 // We "move" the container to its own location
diff --git a/sway/input/seatop_move_tiling.c b/sway/input/seatop_move_tiling.c
index 1e548f5a..4b5aa81e 100644
--- a/sway/input/seatop_move_tiling.c
+++ b/sway/input/seatop_move_tiling.c
@@ -226,7 +226,7 @@ static bool is_parallel(enum sway_container_layout layout,
226 return layout_is_horiz == edge_is_horiz; 226 return layout_is_horiz == edge_is_horiz;
227} 227}
228 228
229static void handle_finish(struct sway_seat *seat) { 229static void handle_finish(struct sway_seat *seat, uint32_t time_msec) {
230 struct seatop_move_tiling_event *e = seat->seatop_data; 230 struct seatop_move_tiling_event *e = seat->seatop_data;
231 231
232 if (!e->target_node) { 232 if (!e->target_node) {
diff --git a/sway/input/seatop_resize_floating.c b/sway/input/seatop_resize_floating.c
index 12851b40..bf6c7ab4 100644
--- a/sway/input/seatop_resize_floating.c
+++ b/sway/input/seatop_resize_floating.c
@@ -142,7 +142,7 @@ static void handle_motion(struct sway_seat *seat, uint32_t time_msec) {
142 arrange_container(con); 142 arrange_container(con);
143} 143}
144 144
145static void handle_finish(struct sway_seat *seat) { 145static void handle_finish(struct sway_seat *seat, uint32_t time_msec) {
146 cursor_set_image(seat->cursor, "left_ptr", NULL); 146 cursor_set_image(seat->cursor, "left_ptr", NULL);
147} 147}
148 148
diff --git a/sway/input/seatop_resize_tiling.c b/sway/input/seatop_resize_tiling.c
index cb0f723d..db32065c 100644
--- a/sway/input/seatop_resize_tiling.c
+++ b/sway/input/seatop_resize_tiling.c
@@ -49,7 +49,7 @@ static void handle_motion(struct sway_seat *seat, uint32_t time_msec) {
49 } 49 }
50} 50}
51 51
52static void handle_finish(struct sway_seat *seat) { 52static void handle_finish(struct sway_seat *seat, uint32_t time_msec) {
53 cursor_set_image(seat->cursor, "left_ptr", NULL); 53 cursor_set_image(seat->cursor, "left_ptr", NULL);
54} 54}
55 55