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 Pick-to: 6.7 Reviewed-by: David Edmundson <davidedmundson@kde.org>
This commit is contained in:
parent
96b9b72016
commit
a55d86be87
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user