From 06e8770129d5c49bfb518b02b3ece6d529e0e4c3 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Tue, 31 May 2016 10:30:16 +0200 Subject: Compositor API: Clear drag icon when dropping Change-Id: I81f9645d1bc959e31f7663ab89bda285951331e7 Reviewed-by: Giulio Camuffo --- src/compositor/wayland_wrapper/qwldatadevice.cpp | 12 ++++++++++-- src/compositor/wayland_wrapper/qwldatadevice_p.h | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'src/compositor/wayland_wrapper') 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 diff --git a/src/compositor/wayland_wrapper/qwldatadevice_p.h b/src/compositor/wayland_wrapper/qwldatadevice_p.h index 7359f3084..2127603a8 100644 --- a/src/compositor/wayland_wrapper/qwldatadevice_p.h +++ b/src/compositor/wayland_wrapper/qwldatadevice_p.h @@ -82,6 +82,8 @@ protected: void data_device_set_selection(Resource *resource, struct ::wl_resource *source, uint32_t serial) Q_DECL_OVERRIDE; private: + void setDragIcon(QWaylandSurface *icon); + QWaylandCompositor *m_compositor; QWaylandInputDevice *m_inputDevice; -- cgit v1.2.3