From 1783b048fd4c97e86de4a1122f64eb2afa603cbf Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Wed, 16 Sep 2020 21:44:33 +0200 Subject: [PATCH] Get rid of QMutableEventPoint::stationaryWithModifiedProperty Omitting stationary points from touch events is such a marginal optimization that this code probably isn't worth maintaining. It wasn't implemented correctly this time either, according to the tst_QQuickMultiPointTouchArea::stationaryTouchWithChangingPressure() test. [ChangeLog][QtGui][QPointerEvent] We no longer attempt to avoid delivery of stationary points within QTouchEvent: every pressed point is now included in every TouchUpdate event. Task-number: QTBUG-77142 Change-Id: If1fd666fb3057a17e0dffdd7ca7138693126b02b Reviewed-by: Volker Hilsheimer --- src/gui/kernel/qevent.cpp | 9 --------- src/gui/kernel/qevent_p.h | 5 ----- src/gui/kernel/qguiapplication.cpp | 6 ------ 3 files changed, 20 deletions(-) diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index 322e5aeb316..91ebb9f7846 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -472,15 +472,6 @@ void QMutableEventPoint::updateFrom(const QEventPoint &other) setPressure(0); break; - case QEventPoint::State::Stationary: - // Stationary points might not be delivered down to the receiving item - // and get their position transformed, keep the old values instead. - if (other.velocity() != velocity() || - !qFuzzyCompare(other.pressure(), pressure())) { - setStationaryWithModifiedProperty(); - } - Q_FALLTHROUGH(); - default: // update or stationary if (globalPosition() != other.globalPosition()) setGlobalLastPosition(globalPosition()); diff --git a/src/gui/kernel/qevent_p.h b/src/gui/kernel/qevent_p.h index 23a171e6ab3..c923af92c96 100644 --- a/src/gui/kernel/qevent_p.h +++ b/src/gui/kernel/qevent_p.h @@ -88,7 +88,6 @@ struct QEventPointPrivate { int pointId = -1; QEventPoint::State state = QEventPoint::State::Unknown; bool accept = false; - bool stationaryWithModifiedProperty = false; }; // Private subclasses to allow accessing and modifying protected variables. @@ -119,8 +118,6 @@ public: void detach(); - bool stationaryWithModifiedProperty() const { return d->stationaryWithModifiedProperty; } - void setId(int pointId) { d->pointId = pointId; } void setDevice(const QPointingDevice *device) { d->device = device; } @@ -163,8 +160,6 @@ public: void setVelocity(const QVector2D &v) { d->velocity = v; } - void setStationaryWithModifiedProperty(bool s = true) { d->stationaryWithModifiedProperty = s; } - QWindow *window() const { return d->window.data(); } void setWindow(const QPointer &w) { d->window = w; } diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index ffb9b26ee7e..a0ab112c8e9 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -2856,7 +2856,6 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To self->lastTouchType = e->touchType; - bool stationaryTouchPointChangedProperty = false; QPointer window = e->window; // the platform hopefully tells us which window received the event QVarLengthArray touchEvents; @@ -2944,11 +2943,6 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To case QEventPoint::State::Released: eventType = QEvent::TouchEnd; break; - case QEventPoint::State::Stationary: - // don't send the event if nothing changed - if (!stationaryTouchPointChangedProperty) - continue; - Q_FALLTHROUGH(); default: eventType = QEvent::TouchUpdate; break;