data-device: Check harder for selection/non-wayland sources

We're not always dealing with weston_data_sources that have a
wl_resource, or data_sources that belong to drag-and-drop. Check
harder for these on the drag-and-drop code paths triggered from
common code.

Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
dev
Carlos Garnacho 9 years ago committed by Bryce Harrington
parent beb7a9f92d
commit 4061e2b67e
  1. 8
      src/data-device.c

@ -100,6 +100,9 @@ data_offer_destroy(struct wl_client *client, struct wl_resource *resource)
static void static void
data_source_notify_finish(struct weston_data_source *source) data_source_notify_finish(struct weston_data_source *source)
{ {
if (!source->actions_set)
return;
if (source->offer->in_ask && if (source->offer->in_ask &&
wl_resource_get_version(source->resource) >= wl_resource_get_version(source->resource) >=
WL_DATA_SOURCE_ACTION_SINCE_VERSION) { WL_DATA_SOURCE_ACTION_SINCE_VERSION) {
@ -157,7 +160,7 @@ data_offer_update_action(struct weston_data_offer *offer)
{ {
uint32_t action; uint32_t action;
if (!offer->source) if (!offer->source || !offer->source->actions_set)
return; return;
action = data_offer_choose_action(offer); action = data_offer_choose_action(offer);
@ -268,7 +271,8 @@ destroy_data_offer(struct wl_resource *resource)
if (wl_resource_get_version(offer->resource) < if (wl_resource_get_version(offer->resource) <
WL_DATA_OFFER_ACTION_SINCE_VERSION) { WL_DATA_OFFER_ACTION_SINCE_VERSION) {
data_source_notify_finish(offer->source); data_source_notify_finish(offer->source);
} else if (wl_resource_get_version(offer->source->resource) >= } else if (offer->source->resource &&
wl_resource_get_version(offer->source->resource) >=
WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION) { WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION) {
wl_data_source_send_cancelled(offer->source->resource); wl_data_source_send_cancelled(offer->source->resource);
} }

Loading…
Cancel
Save