summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp')
-rw-r--r--src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp b/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp
index 81972e83e..0975d24d6 100644
--- a/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp
+++ b/src/plugins/platforms/wayland/qwaylanddatadevicemanager.cpp
@@ -170,6 +170,7 @@ void QWaylandDataDeviceManager::selection(void *data,
struct wl_data_offer *id)
{
Q_UNUSED(wl_data_device);
+
QWaylandDataDeviceManager *handler = static_cast<QWaylandDataDeviceManager *>(data);
QWaylandDataOffer *mime = handler->m_selection_data_offer;
delete mime;
@@ -177,8 +178,12 @@ void QWaylandDataDeviceManager::selection(void *data,
delete transfer_source;
handler->m_selection_data_source = 0;
- mime = static_cast<QWaylandDataOffer *>(wl_data_offer_get_user_data(id));
- handler->m_selection_data_offer = mime;
+ if (id) {
+ mime = static_cast<QWaylandDataOffer *>(wl_data_offer_get_user_data(id));
+ handler->m_selection_data_offer = mime;
+ } else {
+ handler->m_selection_data_offer = 0;
+ }
QGuiApplicationPrivate::platformIntegration()->clipboard()->emitChanged(QClipboard::Clipboard);
}