summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2016-08-01 09:43:59 +0200
committerJohan Helsing <johan.helsing@qt.io>2016-08-02 07:11:26 +0000
commitda364484aa51ce7c73d39ce0ca444169ce69588e (patch)
treef0f7a16975b43dec9f521e1d5ebaee8139ca9c0a /src
parent798127e5c9a107ddd8cc1c04495ce39b64513bdb (diff)
Fix crash when dragging with touch without first having pointer focus
Also add drag-and-drop tests for both touch and mouse. Task-number: QTBUG-54756 Change-Id: Ibfff48b1f2377022a8624e28e9f638076187ddca Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/client/qwaylanddatadevice.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
index 8130578b5..255b13f4c 100644
--- a/src/client/qwaylanddatadevice.cpp
+++ b/src/client/qwaylanddatadevice.cpp
@@ -107,7 +107,10 @@ void QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
{
m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData));
connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled);
+
QWaylandWindow *origin = m_display->currentInputDevice()->pointerFocus();
+ if (!origin)
+ origin = m_display->currentInputDevice()->touchFocus();
start_drag(m_dragSource->object(), origin->object(), icon->object(), m_display->currentInputDevice()->serial());
}