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 <volker.hilsheimer@qt.io>
This commit is contained in:
Shawn Rutledge 2020-09-16 21:44:33 +02:00
parent aa5f2bf836
commit 1783b048fd
3 changed files with 0 additions and 20 deletions

View File

@ -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());

View File

@ -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<QWindow> &w) { d->window = w; }

View File

@ -2856,7 +2856,6 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To
self->lastTouchType = e->touchType;
bool stationaryTouchPointChangedProperty = false;
QPointer<QWindow> window = e->window; // the platform hopefully tells us which window received the event
QVarLengthArray<QMutableTouchEvent, 2> 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;