aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/seatop_move_tiling.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/input/seatop_move_tiling.c')
-rw-r--r--sway/input/seatop_move_tiling.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/sway/input/seatop_move_tiling.c b/sway/input/seatop_move_tiling.c
index 2904792b..0a248091 100644
--- a/sway/input/seatop_move_tiling.c
+++ b/sway/input/seatop_move_tiling.c
@@ -206,7 +206,8 @@ static void handle_motion_postthreshold(struct sway_seat *seat) {
206 desktop_damage_box(&e->drop_box); 206 desktop_damage_box(&e->drop_box);
207} 207}
208 208
209static void handle_motion(struct sway_seat *seat, uint32_t time_msec) { 209static void handle_motion(struct sway_seat *seat, uint32_t time_msec,
210 double dx, double dy) {
210 struct seatop_move_tiling_event *e = seat->seatop_data; 211 struct seatop_move_tiling_event *e = seat->seatop_data;
211 if (e->threshold_reached) { 212 if (e->threshold_reached) {
212 handle_motion_postthreshold(seat); 213 handle_motion_postthreshold(seat);
@@ -215,10 +216,6 @@ static void handle_motion(struct sway_seat *seat, uint32_t time_msec) {
215 } 216 }
216} 217}
217 218
218static void handle_abort(struct sway_seat *seat) {
219 cursor_set_image(seat->cursor, "left_ptr", NULL);
220}
221
222static bool is_parallel(enum sway_container_layout layout, 219static bool is_parallel(enum sway_container_layout layout,
223 enum wlr_edges edge) { 220 enum wlr_edges edge) {
224 bool layout_is_horiz = layout == L_HORIZ || layout == L_TABBED; 221 bool layout_is_horiz = layout == L_HORIZ || layout == L_TABBED;
@@ -226,11 +223,17 @@ static bool is_parallel(enum sway_container_layout layout,
226 return layout_is_horiz == edge_is_horiz; 223 return layout_is_horiz == edge_is_horiz;
227} 224}
228 225
229static void handle_finish(struct sway_seat *seat, uint32_t time_msec) { 226static void handle_button(struct sway_seat *seat, uint32_t time_msec,
227 struct wlr_input_device *device, uint32_t button,
228 enum wlr_button_state state) {
229 if (seat->cursor->pressed_button_count != 0) {
230 return;
231 }
232
230 struct seatop_move_tiling_event *e = seat->seatop_data; 233 struct seatop_move_tiling_event *e = seat->seatop_data;
231 234
232 if (!e->target_node) { 235 if (!e->target_node) {
233 handle_abort(seat); 236 seatop_begin_default(seat);
234 return; 237 return;
235 } 238 }
236 239
@@ -287,7 +290,7 @@ static void handle_finish(struct sway_seat *seat, uint32_t time_msec) {
287 arrange_workspace(new_ws); 290 arrange_workspace(new_ws);
288 } 291 }
289 292
290 cursor_set_image(seat->cursor, "left_ptr", NULL); 293 seatop_begin_default(seat);
291} 294}
292 295
293static void handle_unref(struct sway_seat *seat, struct sway_container *con) { 296static void handle_unref(struct sway_seat *seat, struct sway_container *con) {
@@ -296,21 +299,20 @@ static void handle_unref(struct sway_seat *seat, struct sway_container *con) {
296 e->target_node = NULL; 299 e->target_node = NULL;
297 } 300 }
298 if (e->con == con) { // The container being moved 301 if (e->con == con) { // The container being moved
299 seatop_abort(seat); 302 seatop_begin_default(seat);
300 } 303 }
301} 304}
302 305
303static const struct sway_seatop_impl seatop_impl = { 306static const struct sway_seatop_impl seatop_impl = {
307 .button = handle_button,
304 .motion = handle_motion, 308 .motion = handle_motion,
305 .finish = handle_finish,
306 .abort = handle_abort,
307 .unref = handle_unref, 309 .unref = handle_unref,
308 .render = handle_render, 310 .render = handle_render,
309}; 311};
310 312
311void seatop_begin_move_tiling_threshold(struct sway_seat *seat, 313void seatop_begin_move_tiling_threshold(struct sway_seat *seat,
312 struct sway_container *con, uint32_t button) { 314 struct sway_container *con) {
313 seatop_abort(seat); 315 seatop_end(seat);
314 316
315 struct seatop_move_tiling_event *e = 317 struct seatop_move_tiling_event *e =
316 calloc(1, sizeof(struct seatop_move_tiling_event)); 318 calloc(1, sizeof(struct seatop_move_tiling_event));
@@ -323,14 +325,13 @@ void seatop_begin_move_tiling_threshold(struct sway_seat *seat,
323 325
324 seat->seatop_impl = &seatop_impl; 326 seat->seatop_impl = &seatop_impl;
325 seat->seatop_data = e; 327 seat->seatop_data = e;
326 seat->seatop_button = button;
327 328
328 container_raise_floating(con); 329 container_raise_floating(con);
329} 330}
330 331
331void seatop_begin_move_tiling(struct sway_seat *seat, 332void seatop_begin_move_tiling(struct sway_seat *seat,
332 struct sway_container *con, uint32_t button) { 333 struct sway_container *con) {
333 seatop_begin_move_tiling_threshold(seat, con, button); 334 seatop_begin_move_tiling_threshold(seat, con);
334 struct seatop_move_tiling_event *e = seat->seatop_data; 335 struct seatop_move_tiling_event *e = seat->seatop_data;
335 if (e) { 336 if (e) {
336 e->threshold_reached = true; 337 e->threshold_reached = true;