Mark stationary touch points as updated if pressure or velocity changes
This is to inform Qt Quick when a stationary touchpoint is delivered that it is because of a changed property. Qt Quick still needs to avoid delivering item-customized events (with only the touch points that occur inside the item) that contain only stationary touch points without changed properties. To be able to check this private flag, QQuickPointerTouchEvent needs to be a friend. Task-number: QTBUG-77142 Change-Id: I6ee0dffbbeca9e513c77227b757252e2eec6a4ef Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
ff8e7fd7d3
commit
217dd1b3b0
@ -959,6 +959,7 @@ public:
|
||||
friend class QGuiApplicationPrivate;
|
||||
friend class QApplication;
|
||||
friend class QApplicationPrivate;
|
||||
friend class QQuickPointerTouchEvent;
|
||||
};
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 0)
|
||||
|
@ -67,7 +67,8 @@ public:
|
||||
state(Qt::TouchPointReleased),
|
||||
pressure(-1),
|
||||
rotation(0),
|
||||
ellipseDiameters(0, 0)
|
||||
ellipseDiameters(0, 0),
|
||||
stationaryWithModifiedProperty(false)
|
||||
{ }
|
||||
|
||||
inline QTouchEventTouchPointPrivate *detach()
|
||||
@ -91,6 +92,7 @@ public:
|
||||
QSizeF ellipseDiameters;
|
||||
QVector2D velocity;
|
||||
QTouchEvent::TouchPoint::InfoFlags flags;
|
||||
bool stationaryWithModifiedProperty : 1;
|
||||
QVector<QPointF> rawScreenPositions;
|
||||
};
|
||||
|
||||
|
@ -2843,10 +2843,12 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To
|
||||
if (touchPoint.state() == Qt::TouchPointStationary) {
|
||||
if (touchInfo.touchPoint.velocity() != touchPoint.velocity()) {
|
||||
touchInfo.touchPoint.setVelocity(touchPoint.velocity());
|
||||
touchPoint.d->stationaryWithModifiedProperty = true;
|
||||
stationaryTouchPointChangedProperty = true;
|
||||
}
|
||||
if (!qFuzzyCompare(touchInfo.touchPoint.pressure(), touchPoint.pressure())) {
|
||||
touchInfo.touchPoint.setPressure(touchPoint.pressure());
|
||||
touchPoint.d->stationaryWithModifiedProperty = true;
|
||||
stationaryTouchPointChangedProperty = true;
|
||||
}
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user