summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper/qwldatadevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/compositor/wayland_wrapper/qwldatadevice.cpp')
-rw-r--r--src/compositor/wayland_wrapper/qwldatadevice.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/compositor/wayland_wrapper/qwldatadevice.cpp b/src/compositor/wayland_wrapper/qwldatadevice.cpp
index b11bc8f4f..dea72bdcd 100644
--- a/src/compositor/wayland_wrapper/qwldatadevice.cpp
+++ b/src/compositor/wayland_wrapper/qwldatadevice.cpp
@@ -148,6 +148,7 @@ void DataDevice::drop()
} else {
m_dragDataSource->cancel();
}
+ setDragIcon(nullptr);
}
void DataDevice::cancelDrag()
@@ -159,8 +160,7 @@ void DataDevice::data_device_start_drag(Resource *resource, struct ::wl_resource
{
m_dragClient = resource->client();
m_dragDataSource = source ? DataSource::fromResource(source) : 0;
- m_dragIcon = icon ? QWaylandSurface::fromResource(icon) : 0;
- Q_EMIT m_inputDevice->drag()->iconChanged();
+ setDragIcon(icon ? QWaylandSurface::fromResource(icon) : nullptr);
Q_EMIT m_inputDevice->drag()->dragStarted();
Q_UNUSED(serial);
@@ -193,6 +193,14 @@ void DataDevice::data_device_set_selection(Resource *, struct ::wl_resource *sou
}
}
+void DataDevice::setDragIcon(QWaylandSurface *icon)
+{
+ if (icon == m_dragIcon)
+ return;
+ m_dragIcon = icon;
+ Q_EMIT m_inputDevice->drag()->iconChanged();
+}
+
}
QT_END_NAMESPACE