From 3546cc0541349feea42080b9df50fd76f3e1cd2b Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Fri, 23 Sep 2022 11:40:45 +0300 Subject: [PATCH] wayland: Send wl_data_offer.source_actions before wl_data_device.enter This makes kwin's behavior consistent with other wayland compositors (sway, GNOME Shell, etc) and it's reasonable to provide all the information about the data source before wl_data_device.enter. It also makes Firefox happier. Relevant discussion upstream: https://gitlab.freedesktop.org/wayland/wayland/-/issues/322 CCBUG: 445661 --- src/wayland/datadevice_interface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wayland/datadevice_interface.cpp b/src/wayland/datadevice_interface.cpp index a497a70bc9..de4645a28c 100644 --- a/src/wayland/datadevice_interface.cpp +++ b/src/wayland/datadevice_interface.cpp @@ -156,6 +156,7 @@ DataOfferInterface *DataDeviceInterfacePrivate::createDataOffer(AbstractDataSour DataOfferInterface *offer = new DataOfferInterface(source, data_offer_resource); send_data_offer(offer->resource()); offer->sendAllOffers(); + offer->sendSourceActions(); return offer; } @@ -308,7 +309,6 @@ void DataDeviceInterface::updateDragTarget(SurfaceInterface *surface, quint32 se } d->send_enter(serial, surface->resource(), wl_fixed_from_double(pos.x()), wl_fixed_from_double(pos.y()), offer ? offer->resource() : nullptr); if (offer) { - offer->sendSourceActions(); auto matchOffers = [dragSource, offer] { const DataDeviceManagerInterface::DnDAction action = chooseDndAction(dragSource, offer); offer->dndAction(action);