diff options
-rw-r--r-- | src/compositor/compositor_api/qwaylandseat.cpp | 8 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandseat.h | 2 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandtouch.cpp | 23 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandtouch.h | 2 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandtouch_p.h | 4 |
5 files changed, 23 insertions, 16 deletions
diff --git a/src/compositor/compositor_api/qwaylandseat.cpp b/src/compositor/compositor_api/qwaylandseat.cpp index f84325185..145184c0e 100644 --- a/src/compositor/compositor_api/qwaylandseat.cpp +++ b/src/compositor/compositor_api/qwaylandseat.cpp @@ -242,14 +242,16 @@ void QWaylandSeat::sendKeyReleaseEvent(uint code) /*! * Sends a touch point event with the given \a id and \a state to the touch device. The position * of the touch point is given by \a point. + * + * Returns the serial for the touch up or touch down event. */ -void QWaylandSeat::sendTouchPointEvent(int id, const QPointF &point, Qt::TouchPointState state) +uint QWaylandSeat::sendTouchPointEvent(int id, const QPointF &point, Qt::TouchPointState state) { Q_D(QWaylandSeat); if (d->touch.isNull()) { - return; + return 0; } - d->touch->sendTouchPointEvent(id, point,state); + return d->touch->sendTouchPointEvent(id, point,state); } /*! diff --git a/src/compositor/compositor_api/qwaylandseat.h b/src/compositor/compositor_api/qwaylandseat.h index bfd6e4041..5501d9202 100644 --- a/src/compositor/compositor_api/qwaylandseat.h +++ b/src/compositor/compositor_api/qwaylandseat.h @@ -91,7 +91,7 @@ public: void sendFullKeyEvent(QKeyEvent *event); void sendFullKeyEvent(QWaylandSurface *surface, QKeyEvent *event); - void sendTouchPointEvent(int id, const QPointF &point, Qt::TouchPointState state); + uint sendTouchPointEvent(int id, const QPointF &point, Qt::TouchPointState state); void sendTouchFrameEvent(); void sendTouchCancelEvent(); diff --git a/src/compositor/compositor_api/qwaylandtouch.cpp b/src/compositor/compositor_api/qwaylandtouch.cpp index c07809e71..2caa06bee 100644 --- a/src/compositor/compositor_api/qwaylandtouch.cpp +++ b/src/compositor/compositor_api/qwaylandtouch.cpp @@ -77,26 +77,28 @@ void QWaylandTouchPrivate::touch_release(Resource *resource) wl_resource_destroy(resource->handle); } -void QWaylandTouchPrivate::sendDown(uint32_t time, int touch_id, const QPointF &position) +uint QWaylandTouchPrivate::sendDown(uint32_t time, int touch_id, const QPointF &position) { Q_Q(QWaylandTouch); if (!focusResource || !seat->mouseFocus()) - return; + return 0; uint32_t serial = q->compositor()->nextSerial(); wl_touch_send_down(focusResource->handle, serial, time, seat->mouseFocus()->surfaceResource(), touch_id, wl_fixed_from_double(position.x()), wl_fixed_from_double(position.y())); + return serial; } -void QWaylandTouchPrivate::sendUp(uint32_t time, int touch_id) +uint QWaylandTouchPrivate::sendUp(uint32_t time, int touch_id) { if (!focusResource) - return; + return 0; uint32_t serial = compositor()->nextSerial(); wl_touch_send_up(focusResource->handle, serial, time, touch_id); + return serial; } void QWaylandTouchPrivate::sendMotion(uint32_t time, int touch_id, const QPointF &position) { @@ -147,27 +149,30 @@ QWaylandCompositor *QWaylandTouch::compositor() const /*! * Sends a touch point event for the touch device with the given \a id, * \a position, and \a state. + * + * Returns the serial of the down or up event if sent, otherwise 0. */ -void QWaylandTouch::sendTouchPointEvent(int id, const QPointF &position, Qt::TouchPointState state) +uint QWaylandTouch::sendTouchPointEvent(int id, const QPointF &position, Qt::TouchPointState state) { Q_D(QWaylandTouch); uint32_t time = compositor()->currentTimeMsecs(); + uint serial = 0; switch (state) { case Qt::TouchPointPressed: - d->sendDown(time, id, position); + serial = d->sendDown(time, id, position); break; case Qt::TouchPointMoved: d->sendMotion(time, id, position); break; case Qt::TouchPointReleased: - d->sendUp(time, id); + serial = d->sendUp(time, id); break; case Qt::TouchPointStationary: // stationary points are not sent through wayland, the client must cache them break; - default: - break; } + + return serial; } /*! diff --git a/src/compositor/compositor_api/qwaylandtouch.h b/src/compositor/compositor_api/qwaylandtouch.h index c058d42ae..f539ce2cd 100644 --- a/src/compositor/compositor_api/qwaylandtouch.h +++ b/src/compositor/compositor_api/qwaylandtouch.h @@ -62,7 +62,7 @@ public: QWaylandSeat *seat() const; QWaylandCompositor *compositor() const; - virtual void sendTouchPointEvent(int id, const QPointF &position, Qt::TouchPointState state); + virtual uint sendTouchPointEvent(int id, const QPointF &position, Qt::TouchPointState state); virtual void sendFrameEvent(); virtual void sendCancelEvent(); diff --git a/src/compositor/compositor_api/qwaylandtouch_p.h b/src/compositor/compositor_api/qwaylandtouch_p.h index 2f60076a7..35cd30502 100644 --- a/src/compositor/compositor_api/qwaylandtouch_p.h +++ b/src/compositor/compositor_api/qwaylandtouch_p.h @@ -71,9 +71,9 @@ public: QWaylandCompositor *compositor() const { return seat->compositor(); } - void sendDown(uint32_t time, int touch_id, const QPointF &position); + uint sendDown(uint32_t time, int touch_id, const QPointF &position); void sendMotion(uint32_t time, int touch_id, const QPointF &position); - void sendUp(uint32_t time, int touch_id); + uint sendUp(uint32_t time, int touch_id); void setFocusResource() { |