wayland: Shuffle wl_data_source.cancelled version checks on DnD

We are meant to send a .cancelled event after the drop is performed
in certain situations, but only for version>3 clients. Since this is
all version 3 business, only set the drop_performed flag for v3
clients. This drops the need to perform version checks at the time
of cancelling (which is present for other usecases in v1).

Fixes emission of wl_data_source.cancelled for v1 clients.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1177

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1203

(cherry picked from commit d4c3870286)
This commit is contained in:
Carlos Garnacho 2020-04-16 21:06:15 +02:00 committed by Robert Mader
parent 456e6f345d
commit 7a09d07b9c

View File

@ -1392,7 +1392,6 @@ meta_wayland_source_cancel (MetaWaylandDataSource *source)
if (!priv->resource) if (!priv->resource)
return; return;
if (wl_resource_get_version(priv->resource) >= WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION)
wl_data_source_send_cancelled (priv->resource); wl_data_source_send_cancelled (priv->resource);
} }
@ -1414,12 +1413,13 @@ meta_wayland_source_drop_performed (MetaWaylandDataSource *source)
MetaWaylandDataSourcePrivate *priv = MetaWaylandDataSourcePrivate *priv =
meta_wayland_data_source_get_instance_private (source); meta_wayland_data_source_get_instance_private (source);
priv->drop_performed = TRUE;
if (wl_resource_get_version (priv->resource) >= if (wl_resource_get_version (priv->resource) >=
WL_DATA_SOURCE_DND_DROP_PERFORMED_SINCE_VERSION) WL_DATA_SOURCE_DND_DROP_PERFORMED_SINCE_VERSION)
{
priv->drop_performed = TRUE;
wl_data_source_send_dnd_drop_performed (priv->resource); wl_data_source_send_dnd_drop_performed (priv->resource);
} }
}
static void static void
meta_wayland_source_drag_finished (MetaWaylandDataSource *source) meta_wayland_source_drag_finished (MetaWaylandDataSource *source)