aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/seatop_resize_floating.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/input/seatop_resize_floating.c')
-rw-r--r--sway/input/seatop_resize_floating.c29
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
20static void handle_motion(struct sway_seat *seat, uint32_t time_msec) { 20static 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
28static 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
110static void handle_finish(struct sway_seat *seat, uint32_t time_msec) {
111 cursor_set_image(seat->cursor, "left_ptr", NULL);
112}
113
114static void handle_abort(struct sway_seat *seat) {
115 cursor_set_image(seat->cursor, "left_ptr", NULL);
116}
117
118static void handle_unref(struct sway_seat *seat, struct sway_container *con) { 119static 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
125static const struct sway_seatop_impl seatop_impl = { 126static 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
132void seatop_begin_resize_floating(struct sway_seat *seat, 132void 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