diff options
author | Paul Olav Tvete <paul.tvete@theqtcompany.com> | 2015-09-16 12:37:04 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@theqtcompany.com> | 2015-09-17 12:59:32 +0000 |
commit | dca52a541eaf61269c8e746555380a7aef942b1e (patch) | |
tree | a19d253ad35f0e00ea77afa799fbf0483d96aa10 /src/compositor/compositor_api/qwaylanddrag.cpp | |
parent | 69194916afd652d0282b23b0db06059fe30fd2ae (diff) |
New API for drag and drop
Let the compositor implementation keep all the GUI state.
Change-Id: I73a865fa3407340276d6765e10378b8e23a76fe2
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Diffstat (limited to 'src/compositor/compositor_api/qwaylanddrag.cpp')
-rw-r--r-- | src/compositor/compositor_api/qwaylanddrag.cpp | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/src/compositor/compositor_api/qwaylanddrag.cpp b/src/compositor/compositor_api/qwaylanddrag.cpp index 935feda5b..2348907f0 100644 --- a/src/compositor/compositor_api/qwaylanddrag.cpp +++ b/src/compositor/compositor_api/qwaylanddrag.cpp @@ -52,6 +52,16 @@ public: { } + QtWayland::DataDevice *dataDevice() + { + return QWaylandInputDevicePrivate::get(inputDevice)->dataDevice(); + } + + const QtWayland::DataDevice *dataDevice() const + { + return QWaylandInputDevicePrivate::get(inputDevice)->dataDevice(); + } + QWaylandInputDevice *inputDevice; }; @@ -65,32 +75,49 @@ QWaylandSurface *QWaylandDrag::icon() const { Q_D(const QWaylandDrag); - const QtWayland::DataDevice *dataDevice = QWaylandInputDevicePrivate::get(d->inputDevice)->dataDevice(); + const QtWayland::DataDevice *dataDevice = d->dataDevice(); if (!dataDevice) return 0; return dataDevice->dragIcon(); } -QPointF QWaylandDrag::position() const -{ - Q_D(const QWaylandDrag); - - const QtWayland::DataDevice *dataDevice = QWaylandInputDevicePrivate::get(d->inputDevice)->dataDevice(); - if (!dataDevice) - return QPointF(); - return dataDevice->dragIconPosition(); -} bool QWaylandDrag::visible() const { Q_D(const QWaylandDrag); - const QtWayland::DataDevice *dataDevice = QWaylandInputDevicePrivate::get(d->inputDevice)->dataDevice(); + const QtWayland::DataDevice *dataDevice = d->dataDevice(); if (!dataDevice) return false; return dataDevice->dragIcon() != 0; } +void QWaylandDrag::dragMove(QWaylandSurface *target, const QPointF &pos) +{ + Q_D(QWaylandDrag); + QtWayland::DataDevice *dataDevice = d->dataDevice(); + if (!dataDevice) + return; + dataDevice->dragMove(target, pos); +} +void QWaylandDrag::drop() +{ + Q_D(QWaylandDrag); + QtWayland::DataDevice *dataDevice = d->dataDevice(); + if (!dataDevice) + return; + dataDevice->drop(); +} + +void QWaylandDrag::cancelDrag() +{ + Q_D(QWaylandDrag); + QtWayland::DataDevice *dataDevice = d->dataDevice(); + if (!dataDevice) + return; + dataDevice->cancelDrag(); +} + QT_END_NAMESPACE |