diff options
-rw-r--r-- | src/gui/kernel/qevent.cpp | 20 | ||||
-rw-r--r-- | src/gui/kernel/qevent.h | 3 |
2 files changed, 16 insertions, 7 deletions
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index 55339cac8c..8f153fa2d3 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -2763,12 +2763,16 @@ Qt::MouseButtons QTabletEvent::buttons() const #if QT_DEPRECATED_SINCE(5, 10) QNativeGestureEvent::QNativeGestureEvent(Qt::NativeGestureType type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, qreal realValue, ulong sequenceId, quint64 intValue) - : QInputEvent(QEvent::NativeGesture), mGestureType(type), mTouchDeviceId(255), + : QInputEvent(QEvent::NativeGesture), mGestureType(type), mLocalPos(localPos), mWindowPos(windowPos), mScreenPos(screenPos), mRealValue(realValue), mSequenceId(sequenceId), mIntValue(intValue) { } #endif +typedef QHash<const QNativeGestureEvent*, const QTouchDevice*> NativeGestureEventDataHash; +// ### Qt6: move this to a member in QNativeGestureEvent +Q_GLOBAL_STATIC(NativeGestureEventDataHash, g_nativeGestureEventDataHash) + /*! Constructs a native gesture event of type \a type originating from \a device. @@ -2779,13 +2783,19 @@ QNativeGestureEvent::QNativeGestureEvent(Qt::NativeGestureType type, const QPoin \a realValue is the \macos event parameter, \a sequenceId and \a intValue are the Windows event parameters. \since 5.10 */ -QNativeGestureEvent::QNativeGestureEvent(Qt::NativeGestureType type, const QTouchDevice *device, const QPointF &localPos, const QPointF &windowPos, +QNativeGestureEvent::QNativeGestureEvent(Qt::NativeGestureType type, const QTouchDevice *dev, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, qreal realValue, ulong sequenceId, quint64 intValue) : QInputEvent(QEvent::NativeGesture), mGestureType(type), - mTouchDeviceId(QTouchDevicePrivate::get(const_cast<QTouchDevice *>(device))->id), mLocalPos(localPos), mWindowPos(windowPos), mScreenPos(screenPos), mRealValue(realValue), mSequenceId(sequenceId), mIntValue(intValue) -{ } +{ + g_nativeGestureEventDataHash->insert(this, dev); +} + +QNativeGestureEvent::~QNativeGestureEvent() +{ + g_nativeGestureEventDataHash->remove(this); +} /*! \since 5.10 @@ -2795,7 +2805,7 @@ QNativeGestureEvent::QNativeGestureEvent(Qt::NativeGestureType type, const QTouc const QTouchDevice *QNativeGestureEvent::device() const { - return QTouchDevicePrivate::deviceById(mTouchDeviceId); + return g_nativeGestureEventDataHash->value(this); } /*! diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h index a6f97a21dc..e6e7339b10 100644 --- a/src/gui/kernel/qevent.h +++ b/src/gui/kernel/qevent.h @@ -307,6 +307,7 @@ public: #endif QNativeGestureEvent(Qt::NativeGestureType type, const QTouchDevice *dev, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, qreal value, ulong sequenceId, quint64 intArgument); + ~QNativeGestureEvent(); Qt::NativeGestureType gestureType() const { return mGestureType; } qreal value() const { return mRealValue; } @@ -322,8 +323,6 @@ public: protected: Qt::NativeGestureType mGestureType; - quint8 mTouchDeviceId; // QTouchDevicePrivate::id - quint8 mReserved[3]; // if qreal == double clang will pad the QPointF below to a 8-byte boundary QPointF mLocalPos; QPointF mWindowPos; QPointF mScreenPos; |