aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/seat.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/input/seat.c')
-rw-r--r--sway/input/seat.c47
1 files changed, 26 insertions, 21 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c
index 2c9a85c4..2d355275 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -365,7 +365,7 @@ static void handle_start_drag(struct wl_listener *listener, void *data) {
365 wl_list_insert(&root->drag_icons, &icon->link); 365 wl_list_insert(&root->drag_icons, &icon->link);
366 366
367 drag_icon_update_position(icon); 367 drag_icon_update_position(icon);
368 seatop_abort(seat); 368 seatop_begin_default(seat);
369} 369}
370 370
371static void handle_request_set_selection(struct wl_listener *listener, 371static void handle_request_set_selection(struct wl_listener *listener,
@@ -461,6 +461,8 @@ struct sway_seat *seat_create(const char *seat_name) {
461 461
462 wl_list_insert(&server.input->seats, &seat->link); 462 wl_list_insert(&server.input->seats, &seat->link);
463 463
464 seatop_begin_default(seat);
465
464 return seat; 466 return seat;
465} 467}
466 468
@@ -1175,7 +1177,6 @@ struct seat_config *seat_get_config_by_name(const char *name) {
1175 1177
1176void seat_pointer_notify_button(struct sway_seat *seat, uint32_t time_msec, 1178void seat_pointer_notify_button(struct sway_seat *seat, uint32_t time_msec,
1177 uint32_t button, enum wlr_button_state state) { 1179 uint32_t button, enum wlr_button_state state) {
1178 seat->last_button = button;
1179 seat->last_button_serial = wlr_seat_pointer_notify_button(seat->wlr_seat, 1180 seat->last_button_serial = wlr_seat_pointer_notify_button(seat->wlr_seat,
1180 time_msec, button, state); 1181 time_msec, button, state);
1181} 1182}
@@ -1206,12 +1207,8 @@ void seat_consider_warp_to_focus(struct sway_seat *seat) {
1206 } 1207 }
1207} 1208}
1208 1209
1209bool seat_doing_seatop(struct sway_seat *seat) {
1210 return seat->seatop_impl != NULL;
1211}
1212
1213void seatop_unref(struct sway_seat *seat, struct sway_container *con) { 1210void seatop_unref(struct sway_seat *seat, struct sway_container *con) {
1214 if (seat->seatop_impl && seat->seatop_impl->unref) { 1211 if (seat->seatop_impl->unref) {
1215 seat->seatop_impl->unref(seat, con); 1212 seat->seatop_impl->unref(seat, con);
1216 } 1213 }
1217} 1214}
@@ -1219,29 +1216,33 @@ void seatop_unref(struct sway_seat *seat, struct sway_container *con) {
1219void seatop_button(struct sway_seat *seat, uint32_t time_msec, 1216void seatop_button(struct sway_seat *seat, uint32_t time_msec,
1220 struct wlr_input_device *device, uint32_t button, 1217 struct wlr_input_device *device, uint32_t button,
1221 enum wlr_button_state state) { 1218 enum wlr_button_state state) {
1222 if (seat->seatop_impl && seat->seatop_impl->button) { 1219 if (seat->seatop_impl->button) {
1223 seat->seatop_impl->button(seat, time_msec, device, button, state); 1220 seat->seatop_impl->button(seat, time_msec, device, button, state);
1224 } 1221 }
1225} 1222}
1226 1223
1227void seatop_motion(struct sway_seat *seat, uint32_t time_msec) { 1224void seatop_motion(struct sway_seat *seat, uint32_t time_msec,
1228 if (seat->seatop_impl && seat->seatop_impl->motion) { 1225 double dx, double dy) {
1229 seat->seatop_impl->motion(seat, time_msec); 1226 if (seat->seatop_impl->motion) {
1227 seat->seatop_impl->motion(seat, time_msec, dx, dy);
1230 } 1228 }
1231} 1229}
1232 1230
1233void seatop_finish(struct sway_seat *seat, uint32_t time_msec) { 1231void seatop_axis(struct sway_seat *seat, struct wlr_event_pointer_axis *event) {
1234 if (seat->seatop_impl && seat->seatop_impl->finish) { 1232 if (seat->seatop_impl->axis) {
1235 seat->seatop_impl->finish(seat, time_msec); 1233 seat->seatop_impl->axis(seat, event);
1236 } 1234 }
1237 free(seat->seatop_data);
1238 seat->seatop_data = NULL;
1239 seat->seatop_impl = NULL;
1240} 1235}
1241 1236
1242void seatop_abort(struct sway_seat *seat) { 1237void seatop_rebase(struct sway_seat *seat, uint32_t time_msec) {
1243 if (seat->seatop_impl && seat->seatop_impl->abort) { 1238 if (seat->seatop_impl->rebase) {
1244 seat->seatop_impl->abort(seat); 1239 seat->seatop_impl->rebase(seat, time_msec);
1240 }
1241}
1242
1243void seatop_end(struct sway_seat *seat) {
1244 if (seat->seatop_impl && seat->seatop_impl->end) {
1245 seat->seatop_impl->end(seat);
1245 } 1246 }
1246 free(seat->seatop_data); 1247 free(seat->seatop_data);
1247 seat->seatop_data = NULL; 1248 seat->seatop_data = NULL;
@@ -1250,7 +1251,11 @@ void seatop_abort(struct sway_seat *seat) {
1250 1251
1251void seatop_render(struct sway_seat *seat, struct sway_output *output, 1252void seatop_render(struct sway_seat *seat, struct sway_output *output,
1252 pixman_region32_t *damage) { 1253 pixman_region32_t *damage) {
1253 if (seat->seatop_impl && seat->seatop_impl->render) { 1254 if (seat->seatop_impl->render) {
1254 seat->seatop_impl->render(seat, output, damage); 1255 seat->seatop_impl->render(seat, output, damage);
1255 } 1256 }
1256} 1257}
1258
1259bool seatop_allows_set_cursor(struct sway_seat *seat) {
1260 return seat->seatop_impl->allow_set_cursor;
1261}