diff options
Diffstat (limited to 'sway/input/seatop_resize_floating.c')
-rw-r--r-- | sway/input/seatop_resize_floating.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/sway/input/seatop_resize_floating.c b/sway/input/seatop_resize_floating.c index 18c6db73..b6950bbf 100644 --- a/sway/input/seatop_resize_floating.c +++ b/sway/input/seatop_resize_floating.c | |||
@@ -17,7 +17,16 @@ struct seatop_resize_floating_event { | |||
17 | double ref_con_lx, ref_con_ly; // container's x/y at start of op | 17 | double ref_con_lx, ref_con_ly; // container's x/y at start of op |
18 | }; | 18 | }; |
19 | 19 | ||
20 | static void handle_motion(struct sway_seat *seat, uint32_t time_msec) { | 20 | static void handle_button(struct sway_seat *seat, uint32_t time_msec, |
21 | struct wlr_input_device *device, uint32_t button, | ||
22 | enum wlr_button_state state) { | ||
23 | if (seat->cursor->pressed_button_count == 0) { | ||
24 | seatop_begin_default(seat); | ||
25 | } | ||
26 | } | ||
27 | |||
28 | static void handle_motion(struct sway_seat *seat, uint32_t time_msec, | ||
29 | double dx, double dy) { | ||
21 | struct seatop_resize_floating_event *e = seat->seatop_data; | 30 | struct seatop_resize_floating_event *e = seat->seatop_data; |
22 | struct sway_container *con = e->con; | 31 | struct sway_container *con = e->con; |
23 | enum wlr_edges edge = e->edge; | 32 | enum wlr_edges edge = e->edge; |
@@ -107,31 +116,22 @@ static void handle_motion(struct sway_seat *seat, uint32_t time_msec) { | |||
107 | arrange_container(con); | 116 | arrange_container(con); |
108 | } | 117 | } |
109 | 118 | ||
110 | static void handle_finish(struct sway_seat *seat, uint32_t time_msec) { | ||
111 | cursor_set_image(seat->cursor, "left_ptr", NULL); | ||
112 | } | ||
113 | |||
114 | static void handle_abort(struct sway_seat *seat) { | ||
115 | cursor_set_image(seat->cursor, "left_ptr", NULL); | ||
116 | } | ||
117 | |||
118 | static void handle_unref(struct sway_seat *seat, struct sway_container *con) { | 119 | static void handle_unref(struct sway_seat *seat, struct sway_container *con) { |
119 | struct seatop_resize_floating_event *e = seat->seatop_data; | 120 | struct seatop_resize_floating_event *e = seat->seatop_data; |
120 | if (e->con == con) { | 121 | if (e->con == con) { |
121 | seatop_abort(seat); | 122 | seatop_begin_default(seat); |
122 | } | 123 | } |
123 | } | 124 | } |
124 | 125 | ||
125 | static const struct sway_seatop_impl seatop_impl = { | 126 | static const struct sway_seatop_impl seatop_impl = { |
127 | .button = handle_button, | ||
126 | .motion = handle_motion, | 128 | .motion = handle_motion, |
127 | .finish = handle_finish, | ||
128 | .abort = handle_abort, | ||
129 | .unref = handle_unref, | 129 | .unref = handle_unref, |
130 | }; | 130 | }; |
131 | 131 | ||
132 | void seatop_begin_resize_floating(struct sway_seat *seat, | 132 | void seatop_begin_resize_floating(struct sway_seat *seat, |
133 | struct sway_container *con, uint32_t button, enum wlr_edges edge) { | 133 | struct sway_container *con, enum wlr_edges edge) { |
134 | seatop_abort(seat); | 134 | seatop_end(seat); |
135 | 135 | ||
136 | struct seatop_resize_floating_event *e = | 136 | struct seatop_resize_floating_event *e = |
137 | calloc(1, sizeof(struct seatop_resize_floating_event)); | 137 | calloc(1, sizeof(struct seatop_resize_floating_event)); |
@@ -154,7 +154,6 @@ void seatop_begin_resize_floating(struct sway_seat *seat, | |||
154 | 154 | ||
155 | seat->seatop_impl = &seatop_impl; | 155 | seat->seatop_impl = &seatop_impl; |
156 | seat->seatop_data = e; | 156 | seat->seatop_data = e; |
157 | seat->seatop_button = button; | ||
158 | 157 | ||
159 | container_raise_floating(con); | 158 | container_raise_floating(con); |
160 | 159 | ||