summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Edmundson <davidedmundson@kde.org>2023-03-02 16:05:05 +0000
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-12-11 12:59:20 +0000
commite6867fd21e3bf4234abe934b71b5af3850d98d06 (patch)
tree1098090c5cb44a25e0628be50f4b065ab6f3fa31
parent9eb71d709e045222c3270ea3e7f0c4134525322f (diff)
tests: Only track one data offer during a drag
A drag consists of one data source which in turn will be represented by one data device sent to each client. We don't need to manage a list Change-Id: Icd2aba3ced1d8254d15400b0b687888b0872cc35 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 9c9f66a73dae53937af3f756fdbecc715fd3bbbb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--tests/auto/client/shared/datadevice.cpp11
-rw-r--r--tests/auto/client/shared/datadevice.h2
2 files changed, 5 insertions, 8 deletions
diff --git a/tests/auto/client/shared/datadevice.cpp b/tests/auto/client/shared/datadevice.cpp
index 26ebec6bd..2a874a77f 100644
--- a/tests/auto/client/shared/datadevice.cpp
+++ b/tests/auto/client/shared/datadevice.cpp
@@ -51,7 +51,7 @@ DataOffer *DataDevice::sendDataOffer(wl_client *client, const QStringList &mimeT
{
Q_ASSERT(client);
auto *offer = new DataOffer(this, client, m_manager->m_version);
- m_offers << offer;
+ m_offer = offer;
for (auto *resource : resourceMap().values(client))
wl_data_device::send_data_offer(resource->handle, offer->resource()->handle);
for (const auto &mimeType : mimeTypes)
@@ -71,8 +71,8 @@ void DataDevice::sendEnter(Surface *surface, const QPoint &position)
{
uint serial = m_manager->m_compositor->nextSerial();
Resource *resource = resourceMap().value(surface->resource()->client());
- for (DataOffer *offer: m_offers)
- wl_data_device::send_enter(resource->handle, serial, surface->resource()->handle, position.x(), position.y(), offer->resource()->handle);
+ if (m_offer)
+ wl_data_device::send_enter(resource->handle, serial, surface->resource()->handle, position.x(), position.y(), m_offer->resource()->handle);
}
void DataDevice::sendMotion(Surface *surface, const QPoint &position)
@@ -108,10 +108,7 @@ void DataOffer::data_offer_receive(Resource *resource, const QString &mime_type,
void DataOffer::data_offer_destroy(QtWaylandServer::wl_data_offer::Resource *resource)
{
- bool removed = m_dataDevice->m_sentSelectionOffers.removeOne(this);
- if (!removed)
- removed = m_dataDevice->m_offers.removeOne(this);
- QVERIFY(removed);
+ m_dataDevice->m_sentSelectionOffers.removeOne(this);
wl_resource_destroy(resource->handle);
}
diff --git a/tests/auto/client/shared/datadevice.h b/tests/auto/client/shared/datadevice.h
index ee1e57d65..792a3e4bb 100644
--- a/tests/auto/client/shared/datadevice.h
+++ b/tests/auto/client/shared/datadevice.h
@@ -63,7 +63,7 @@ public:
DataDeviceManager *m_manager = nullptr;
Seat *m_seat = nullptr;
QList<DataOffer *> m_sentSelectionOffers;
- QList<DataOffer *> m_offers;
+ QPointer<DataOffer> m_offer;
signals:
void dragStarted();