From 0336f08fec906af7e907d07d990a097a9a1d8726 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Thu, 3 Jun 2021 10:39:52 +0200 Subject: [PATCH] Use Pressed/Released eventpoint state with native gesture begin/end The QSinglePointEvent is mostly responsible for setting QEventPoint::state(); but in this case we need to decide based on Qt::NativeGestureType, so it needs to be refined in the QNativeGestureEvent constructor. Fixes: QTBUG-94178 Change-Id: I9799fe5b8fea71f934311ae2f3bb8e033d132ec5 Reviewed-by: Povilas Kanapickas Reviewed-by: Fabian Kosmale --- src/gui/kernel/qevent.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index 4e6de35c94..db4e2624fa 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -2829,6 +2829,19 @@ QNativeGestureEvent::QNativeGestureEvent(Qt::NativeGestureType type, const QPoin m_sequenceId(sequenceId), m_deltas(deltas), m_realValue(value), m_gestureType(type), m_fingerCount(fingerCount) { Q_ASSERT(fingerCount < 16); // we store it in 4 bits unsigned + + // make correction to QEventPoint::state(): the QSinglePointEvent ctor doesn't get gesture type, defaults to Updated + auto &pt = QMutableEventPoint::from(m_points.first()); + switch (type) { + case Qt::BeginNativeGesture: + pt.setState(QEventPoint::State::Pressed); + break; + case Qt::EndNativeGesture: + pt.setState(QEventPoint::State::Released); + break; + default: + break; + } } QNativeGestureEvent::~QNativeGestureEvent() = default;