diff options
author | emersion <contact@emersion.fr> | 2018-11-21 21:32:54 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-11-26 12:35:48 +0100 |
commit | 5d26da9d15d4874c383bbc9948a802fcd605dc8b (patch) | |
tree | 2c6bbf75de37baed4a2aae5b8e537a0f1746c72e /include | |
parent | eaa852ed77f66f782df73a33928717d68937d4b1 (diff) |
data-device: allow multiple devices for the same seat
This commit makes it possible for a single client to have multiple data devices
for the same seat. This fixes issues with Firefox.
This mainly removes wlr_data_source.offer. We make sure we create one data
offer per device. We now make the offer inert when the source is destroyed.
Fixes the second half of https://github.com/swaywm/wlroots/issues/1041
Diffstat (limited to 'include')
-rw-r--r-- | include/types/wlr_data_device.h | 3 | ||||
-rw-r--r-- | include/wlr/types/wlr_data_device.h | 13 |
2 files changed, 8 insertions, 8 deletions
diff --git a/include/types/wlr_data_device.h b/include/types/wlr_data_device.h index 388e91a5..376c5f09 100644 --- a/include/types/wlr_data_device.h +++ b/include/types/wlr_data_device.h @@ -19,6 +19,7 @@ extern const struct wlr_surface_role drag_icon_surface_role; struct wlr_data_offer *data_offer_create(struct wl_client *client, struct wlr_data_source *source, uint32_t version); void data_offer_update_action(struct wlr_data_offer *offer); +void data_offer_destroy(struct wlr_data_offer *offer); struct wlr_client_data_source *client_data_source_create( struct wl_client *client, uint32_t version, uint32_t id, @@ -26,7 +27,7 @@ struct wlr_client_data_source *client_data_source_create( struct wlr_client_data_source *client_data_source_from_resource( struct wl_resource *resource); struct wlr_data_offer *data_source_send_offer(struct wlr_data_source *source, - struct wlr_seat_client *target); + struct wl_resource *device_resource); void data_source_notify_finish(struct wlr_data_source *source); bool seat_client_start_drag(struct wlr_seat_client *client, diff --git a/include/wlr/types/wlr_data_device.h b/include/wlr/types/wlr_data_device.h index 9ce8f400..9c4ce995 100644 --- a/include/wlr/types/wlr_data_device.h +++ b/include/wlr/types/wlr_data_device.h @@ -12,14 +12,14 @@ #include <wayland-server.h> #include <wlr/types/wlr_seat.h> -extern const struct -wlr_pointer_grab_interface wlr_data_device_pointer_drag_interface; +extern const struct wlr_pointer_grab_interface + wlr_data_device_pointer_drag_interface; -extern const struct -wlr_keyboard_grab_interface wlr_data_device_keyboard_drag_interface; +extern const struct wlr_keyboard_grab_interface + wlr_data_device_keyboard_drag_interface; -extern const struct -wlr_touch_grab_interface wlr_data_device_touch_drag_interface; +extern const struct wlr_touch_grab_interface + wlr_data_device_touch_drag_interface; struct wlr_data_device_manager { struct wl_global *global; @@ -72,7 +72,6 @@ struct wlr_data_source { // source status bool accepted; - struct wlr_data_offer *offer; // drag'n'drop status enum wl_data_device_manager_dnd_action current_dnd_action; |