summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylanddatadevice.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-09-24 03:03:15 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-09-24 03:03:15 +0200
commitfc6ee24ac1bf94ca99b6629f00d047131d424e87 (patch)
treeb55885d34dc9ba49c880467ec823dd4674a6733e /src/client/qwaylanddatadevice.cpp
parent7fa3a9c2f181323513733ceaac196579730be600 (diff)
parentda371debb1bcc4a22c5157b0d8a2e09a7cb7ce1b (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Diffstat (limited to 'src/client/qwaylanddatadevice.cpp')
-rw-r--r--src/client/qwaylanddatadevice.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
index e7afc3ca8..fc3c7077a 100644
--- a/src/client/qwaylanddatadevice.cpp
+++ b/src/client/qwaylanddatadevice.cpp
@@ -103,20 +103,23 @@ QWaylandDataOffer *QWaylandDataDevice::dragOffer() const
return m_dragOffer.data();
}
-void QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
+bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
{
- m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData));
- connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled);
-
auto *seat = m_display->currentInputDevice();
auto *origin = seat->pointerFocus();
if (!origin)
origin = seat->touchFocus();
- if (origin)
- start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial());
- else
+ if (!origin) {
qCDebug(lcQpaWayland) << "Couldn't start a drag because the origin window could not be found.";
+ return false;
+ }
+
+ m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData));
+ connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled);
+
+ start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial());
+ return true;
}
void QWaylandDataDevice::cancelDrag()