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>
This commit is contained in:
committed by
Bryce Harrington
parent
beb7a9f92d
commit
4061e2b67e
+6
-2
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user