diff options
author | Jan Arve Saether <jan-arve.saether@qt.io> | 2017-09-27 00:03:48 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2017-09-28 04:45:35 +0000 |
commit | 36af37c99c13244cac54313d38af183ef40133f5 (patch) | |
tree | 8d2a86656dd401be7571c76fe60597d3b25bf6d5 /src/gui/kernel | |
parent | 70422449ef892d7cc3086d88e5e9e43c771e2bc3 (diff) |
Fix BIC issue with QNativeGestureEvent
Problem was for 32 bit macOS, or if QT_COORD_TYPE was configured
to be float.
Change-Id: I0a3d3d305f2e8a0f9be7c40f4fef7eabf4643d05
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/gui/kernel')
-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; |