diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-11-24 09:20:08 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2020-11-27 12:02:27 +0000 |
commit | 3b58d9814fedd0e679e195b45e3299df1cbf7688 (patch) | |
tree | f71144860ad66c21563e0ad0465458bc59d29a2a /src/gui | |
parent | b88dd5490b4bcec320639cfd36518eadfaabcccd (diff) |
Windows QPA: Pass device for synthesized touch/tablet events
Add the overloads for mouse events with device/without timestamp
and pass the active tablet or touch device.
Task-number: QTBUG-88678
Task-number: QTBUG-46412
Change-Id: I8695b493540d0cbf50e9c72afe870a7633de3ab9
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
(cherry picked from commit d3caea04dc6c3a7072a43294b70bec860c199bf1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface.cpp | 20 | ||||
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface.h | 13 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 14c071b4d9..2f26d38dde 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -381,6 +381,15 @@ QT_DEFINE_QPA_EVENT_HANDLER(bool, handleMouseEvent, QWindow *window, return handleMouseEvent<Delivery>(window, time, local, global, state, button, type, mods, source); } +QT_DEFINE_QPA_EVENT_HANDLER(bool, handleMouseEvent, QWindow *window, const QPointingDevice *device, + const QPointF &local, const QPointF &global, Qt::MouseButtons state, + Qt::MouseButton button, QEvent::Type type, Qt::KeyboardModifiers mods, + Qt::MouseEventSource source) +{ + unsigned long time = QWindowSystemInterfacePrivate::eventTime.elapsed(); + return handleMouseEvent<Delivery>(window, time, device, local, global, state, button, type, mods, source); +} + QT_DEFINE_QPA_EVENT_HANDLER(bool, handleMouseEvent, QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons state, Qt::MouseButton button, QEvent::Type type, Qt::KeyboardModifiers mods, @@ -418,6 +427,17 @@ bool QWindowSystemInterface::handleFrameStrutMouseEvent(QWindow *window, return handleFrameStrutMouseEvent(window, time, local, global, state, button, type, mods, source); } +bool QWindowSystemInterface::handleFrameStrutMouseEvent(QWindow *window, const QPointingDevice *device, + const QPointF &local, const QPointF &global, + Qt::MouseButtons state, + Qt::MouseButton button, QEvent::Type type, + Qt::KeyboardModifiers mods, + Qt::MouseEventSource source) +{ + const unsigned long time = QWindowSystemInterfacePrivate::eventTime.elapsed(); + return handleFrameStrutMouseEvent(window, time, device, local, global, state, button, type, mods, source); +} + bool QWindowSystemInterface::handleFrameStrutMouseEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons state, diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index 80a66311c0..13a428d837 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -82,6 +82,12 @@ public: Qt::KeyboardModifiers mods = Qt::NoModifier, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static bool handleMouseEvent(QWindow *window, const QPointingDevice *device, + const QPointF &local, const QPointF &global, + Qt::MouseButtons state, Qt::MouseButton button, QEvent::Type type, + Qt::KeyboardModifiers mods = Qt::NoModifier, + Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> static bool handleMouseEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons state, Qt::MouseButton button, QEvent::Type type, @@ -100,6 +106,13 @@ public: Qt::KeyboardModifiers mods = Qt::NoModifier, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); + static bool handleFrameStrutMouseEvent(QWindow *window, const QPointingDevice *device, + const QPointF &local, const QPointF &global, + Qt::MouseButtons state, + Qt::MouseButton button, QEvent::Type type, + Qt::KeyboardModifiers mods = Qt::NoModifier, + Qt::MouseEventSource source = + Qt::MouseEventNotSynthesized); static bool handleFrameStrutMouseEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons state, Qt::MouseButton button, QEvent::Type type, |