|
|
@ -33,6 +33,10 @@ static void data_device_start_drag(struct wl_client *client,
|
|
|
|
static void data_device_set_selection(struct wl_client *client,
|
|
|
|
static void data_device_set_selection(struct wl_client *client,
|
|
|
|
struct wl_resource *resource, struct wl_resource *source_resource,
|
|
|
|
struct wl_resource *resource, struct wl_resource *source_resource,
|
|
|
|
uint32_t serial) {
|
|
|
|
uint32_t serial) {
|
|
|
|
|
|
|
|
if (!source_resource) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: serial validation
|
|
|
|
// TODO: serial validation
|
|
|
|
struct wlr_seat_handle *handle = wl_resource_get_user_data(resource);
|
|
|
|
struct wlr_seat_handle *handle = wl_resource_get_user_data(resource);
|
|
|
|
struct wlr_data_device *device = handle->wlr_seat->data_device;
|
|
|
|
struct wlr_data_device *device = handle->wlr_seat->data_device;
|
|
|
@ -176,6 +180,10 @@ void wlr_data_device_manager_destroy(struct wlr_data_device_manager *manager) {
|
|
|
|
|
|
|
|
|
|
|
|
void wlr_data_device_set_selection(struct wlr_data_device *device,
|
|
|
|
void wlr_data_device_set_selection(struct wlr_data_device *device,
|
|
|
|
struct wlr_data_source *source) {
|
|
|
|
struct wlr_data_source *source) {
|
|
|
|
|
|
|
|
if (device->selection == source) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (device->selection) {
|
|
|
|
if (device->selection) {
|
|
|
|
wl_list_remove(&device->selection_destroyed.link);
|
|
|
|
wl_list_remove(&device->selection_destroyed.link);
|
|
|
|
wlr_data_source_cancelled(device->selection);
|
|
|
|
wlr_data_source_cancelled(device->selection);
|
|
|
|