diff options
author | Johan Klokkhammer Helsing <johan.helsing@qt.io> | 2016-09-21 12:01:02 +0200 |
---|---|---|
committer | Johan Helsing <johan.helsing@qt.io> | 2016-09-28 12:03:07 +0000 |
commit | 21ab16ca3c8d19a31d915d8fe46172a0d6b73bd3 (patch) | |
tree | 188c371e113f8b612583468b2cc89963fe4e61de | |
parent | 8d437e79cdd41ede195ed1829d59b2b012b4d40d (diff) | |
download | qtwayland-21ab16ca3c8d19a31d915d8fe46172a0d6b73bd3.tar.gz |
Compositor: Return event serials from mouse press functions
Change-Id: Idbfa41edc7bad23dcd606da56b99a85367006fe8
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
-rw-r--r-- | src/compositor/compositor_api/qwaylandpointer.cpp | 22 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandpointer.h | 6 |
2 files changed, 20 insertions, 8 deletions
diff --git a/src/compositor/compositor_api/qwaylandpointer.cpp b/src/compositor/compositor_api/qwaylandpointer.cpp index 742987c8..5581a5c1 100644 --- a/src/compositor/compositor_api/qwaylandpointer.cpp +++ b/src/compositor/compositor_api/qwaylandpointer.cpp @@ -151,34 +151,45 @@ void QWaylandPointer::setOutput(QWaylandOutput *output) /*! * Sends a mouse press event for \a button to the view currently holding mouse focus. + * + * Returns the serial number of the press event. */ -void QWaylandPointer::sendMousePressEvent(Qt::MouseButton button) +uint QWaylandPointer::sendMousePressEvent(Qt::MouseButton button) { Q_D(QWaylandPointer); uint32_t time = d->compositor()->currentTimeMsecs(); d->buttonCount++; + uint serial = 0; + if (d->focusResource) - sendButton(d->focusResource, time, button, WL_POINTER_BUTTON_STATE_PRESSED); + serial = sendButton(d->focusResource, time, button, WL_POINTER_BUTTON_STATE_PRESSED); if (d->buttonCount == 1) { emit buttonPressedChanged(); } + + return serial; } /*! * Sends a mouse release event for \a button to the view currently holding mouse focus. + * + * Returns the serial number of the release event. */ -void QWaylandPointer::sendMouseReleaseEvent(Qt::MouseButton button) +uint QWaylandPointer::sendMouseReleaseEvent(Qt::MouseButton button) { Q_D(QWaylandPointer); uint32_t time = d->compositor()->currentTimeMsecs(); d->buttonCount--; + uint serial = 0; if (d->focusResource) - sendButton(d->focusResource, time, button, WL_POINTER_BUTTON_STATE_RELEASED); + serial = sendButton(d->focusResource, time, button, WL_POINTER_BUTTON_STATE_RELEASED); if (d->buttonCount == 0) emit buttonPressedChanged(); + + return serial; } /*! @@ -308,11 +319,12 @@ struct wl_resource *QWaylandPointer::focusResource() const /*! * \internal */ -void QWaylandPointer::sendButton(struct wl_resource *resource, uint32_t time, Qt::MouseButton button, uint32_t state) +uint QWaylandPointer::sendButton(struct wl_resource *resource, uint32_t time, Qt::MouseButton button, uint32_t state) { Q_D(QWaylandPointer); uint32_t serial = d->compositor()->nextSerial(); d->send_button(resource, serial, time, toWaylandButton(button), state); + return serial; } /*! diff --git a/src/compositor/compositor_api/qwaylandpointer.h b/src/compositor/compositor_api/qwaylandpointer.h index 0db1635b..87bf31c9 100644 --- a/src/compositor/compositor_api/qwaylandpointer.h +++ b/src/compositor/compositor_api/qwaylandpointer.h @@ -64,8 +64,8 @@ public: QWaylandOutput *output() const; void setOutput(QWaylandOutput *output); - virtual void sendMousePressEvent(Qt::MouseButton button); - virtual void sendMouseReleaseEvent(Qt::MouseButton button); + virtual uint sendMousePressEvent(Qt::MouseButton button); + virtual uint sendMouseReleaseEvent(Qt::MouseButton button); virtual void sendMouseMoveEvent(QWaylandView *view, const QPointF &localPos, const QPointF &outputSpacePos); virtual void sendMouseWheelEvent(Qt::Orientation orientation, int delta); @@ -80,7 +80,7 @@ public: wl_resource *focusResource() const; static uint32_t toWaylandButton(Qt::MouseButton button); - void sendButton(struct wl_resource *resource, uint32_t time, Qt::MouseButton button, uint32_t state); + uint sendButton(struct wl_resource *resource, uint32_t time, Qt::MouseButton button, uint32_t state); Q_SIGNALS: void outputChanged(); void buttonPressedChanged(); |