mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-11-03 09:01:42 -05:00
data-device: notify the compositor about new drag icons
Let the compositor use a listener to be notified when a new drag icon is set up.
This commit is contained in:
parent
83685c506e
commit
897a4ec62d
3 changed files with 8 additions and 0 deletions
|
|
@ -300,6 +300,7 @@ data_device_start_drag(struct wl_client *client, struct wl_resource *resource,
|
||||||
struct wl_resource *icon_resource, uint32_t time)
|
struct wl_resource *icon_resource, uint32_t time)
|
||||||
{
|
{
|
||||||
struct wl_input_device *device = resource->data;
|
struct wl_input_device *device = resource->data;
|
||||||
|
struct wl_listener *listener, *tmp;
|
||||||
|
|
||||||
/* FIXME: Check that client has implicit grab on the origin
|
/* FIXME: Check that client has implicit grab on the origin
|
||||||
* surface that matches the given time. */
|
* surface that matches the given time. */
|
||||||
|
|
@ -318,6 +319,10 @@ data_device_start_drag(struct wl_client *client, struct wl_resource *resource,
|
||||||
device->drag_icon_listener.func = destroy_data_device_icon;
|
device->drag_icon_listener.func = destroy_data_device_icon;
|
||||||
wl_list_insert(icon_resource->destroy_listener_list.prev,
|
wl_list_insert(icon_resource->destroy_listener_list.prev,
|
||||||
&device->drag_icon_listener.link);
|
&device->drag_icon_listener.link);
|
||||||
|
|
||||||
|
wl_list_for_each_safe(listener, tmp,
|
||||||
|
&device->drag_icon_listener_list, link)
|
||||||
|
listener->func(listener, icon_resource, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
wl_input_device_start_pointer_grab(device, &device->drag_grab, time);
|
wl_input_device_start_pointer_grab(device, &device->drag_grab, time);
|
||||||
|
|
|
||||||
|
|
@ -533,6 +533,8 @@ wl_input_device_init(struct wl_input_device *device)
|
||||||
device->selection_data_source = NULL;
|
device->selection_data_source = NULL;
|
||||||
wl_list_init(&device->selection_listener_list);
|
wl_list_init(&device->selection_listener_list);
|
||||||
|
|
||||||
|
wl_list_init(&device->drag_icon_listener_list);
|
||||||
|
|
||||||
device->x = 100;
|
device->x = 100;
|
||||||
device->y = 100;
|
device->y = 100;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -233,6 +233,7 @@ struct wl_input_device {
|
||||||
struct wl_pointer_grab drag_grab;
|
struct wl_pointer_grab drag_grab;
|
||||||
struct wl_surface *drag_surface;
|
struct wl_surface *drag_surface;
|
||||||
struct wl_listener drag_icon_listener;
|
struct wl_listener drag_icon_listener;
|
||||||
|
struct wl_list drag_icon_listener_list;
|
||||||
|
|
||||||
struct wl_data_source *selection_data_source;
|
struct wl_data_source *selection_data_source;
|
||||||
struct wl_listener selection_data_source_listener;
|
struct wl_listener selection_data_source_listener;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue