From 8ef270dacbbb03c5b1eeaabe35e034ce7df96f2f Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Thu, 2 Jun 2016 15:54:15 +0200 Subject: Store and expose origin surface in QWaylandDrag Change-Id: Ic2bcc88f4ff375019ff7c6fe80ae4ec72205ca2d Reviewed-by: Paul Olav Tvete --- src/compositor/wayland_wrapper/qwldatadevice.cpp | 9 ++++++++- src/compositor/wayland_wrapper/qwldatadevice_p.h | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/compositor/wayland_wrapper') diff --git a/src/compositor/wayland_wrapper/qwldatadevice.cpp b/src/compositor/wayland_wrapper/qwldatadevice.cpp index b11bc8f4f..e766d6f5b 100644 --- a/src/compositor/wayland_wrapper/qwldatadevice.cpp +++ b/src/compositor/wayland_wrapper/qwldatadevice.cpp @@ -65,6 +65,7 @@ DataDevice::DataDevice(QWaylandInputDevice *inputDevice) , m_dragFocus(0) , m_dragFocusResource(0) , m_dragIcon(0) + , m_dragOrigin(nullptr) { } @@ -123,6 +124,11 @@ QWaylandSurface *DataDevice::dragIcon() const return m_dragIcon; } +QWaylandSurface *DataDevice::dragOrigin() const +{ + return m_dragOrigin; +} + void DataDevice::sourceDestroyed(DataSource *source) { if (m_selectionSource == source) @@ -148,6 +154,7 @@ void DataDevice::drop() } else { m_dragDataSource->cancel(); } + m_dragOrigin = nullptr; } void DataDevice::cancelDrag() @@ -159,12 +166,12 @@ void DataDevice::data_device_start_drag(Resource *resource, struct ::wl_resource { m_dragClient = resource->client(); m_dragDataSource = source ? DataSource::fromResource(source) : 0; + m_dragOrigin = QWaylandSurface::fromResource(origin); m_dragIcon = icon ? QWaylandSurface::fromResource(icon) : 0; Q_EMIT m_inputDevice->drag()->iconChanged(); Q_EMIT m_inputDevice->drag()->dragStarted(); Q_UNUSED(serial); - Q_UNUSED(origin); //### need to verify that we have an implicit grab with this serial } diff --git a/src/compositor/wayland_wrapper/qwldatadevice_p.h b/src/compositor/wayland_wrapper/qwldatadevice_p.h index 7359f3084..62d6021f7 100644 --- a/src/compositor/wayland_wrapper/qwldatadevice_p.h +++ b/src/compositor/wayland_wrapper/qwldatadevice_p.h @@ -70,6 +70,7 @@ public: void setDragFocus(QWaylandSurface *focus, const QPointF &localPosition); QWaylandSurface *dragIcon() const; + QWaylandSurface *dragOrigin() const; void sourceDestroyed(DataSource *source); @@ -94,6 +95,7 @@ private: Resource *m_dragFocusResource; QWaylandSurface *m_dragIcon; + QWaylandSurface *m_dragOrigin; }; } -- cgit v1.2.3