struct wl_resource *icon_resource, uint32_t time)
{
struct wl_input_device *device = resource->data;
+ struct wl_listener *listener, *tmp;
/* FIXME: Check that client has implicit grab on the origin
* surface that matches the given time. */
device->drag_icon_listener.func = destroy_data_device_icon;
wl_list_insert(icon_resource->destroy_listener_list.prev,
&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);
device->selection_data_source = NULL;
wl_list_init(&device->selection_listener_list);
+ wl_list_init(&device->drag_icon_listener_list);
+
device->x = 100;
device->y = 100;
}
struct wl_pointer_grab drag_grab;
struct wl_surface *drag_surface;
struct wl_listener drag_icon_listener;
+ struct wl_list drag_icon_listener_list;
struct wl_data_source *selection_data_source;
struct wl_listener selection_data_source_listener;