diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-09-24 03:03:15 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-09-24 03:03:15 +0200 |
commit | fc6ee24ac1bf94ca99b6629f00d047131d424e87 (patch) | |
tree | b55885d34dc9ba49c880467ec823dd4674a6733e /src/client/qwaylanddatadevice.cpp | |
parent | 7fa3a9c2f181323513733ceaac196579730be600 (diff) | |
parent | da371debb1bcc4a22c5157b0d8a2e09a7cb7ce1b (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I3bbf053a35ceee52d9953a676bacec2b9299bad5
Diffstat (limited to 'src/client/qwaylanddatadevice.cpp')
-rw-r--r-- | src/client/qwaylanddatadevice.cpp | 17 |
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() |