Details
-
Bug
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
6.9.1
-
None
-
iOS iPad
-
-
iOS/tvOS/watchOS
Description
The pinch gestures for zooming are not always processed correctly on the iPad. If both TouchPoints (QEventPoints) are not registered at TouchBegin, no pinch gesture is generated during the TouchUpdate.
If a finger touches the window, this TouchEvent is registered by the QApplicationPrivate::translateRawTouchEvent and the target widget is recognized. This creates a new TouchEvent with the target widget, which is accepted. Later in QApplication::notify the target widget is stored on the touch point.
If the second finger hits the window, a TouchUpdate-Event is registered and the new touch point with its widget is found. This touch event generates a PinchGesture with scale factor 1.0. Thats ok, and the event is accepted. But in QApplication::notify, this TouchUpdate event does not stores the target widget to the new TouchPoint.
TouchUpdate events are generated as soon as the fingers are moved. But in QApplicationPrivate::translateRawTouchEvent, state of the touchPoint is not Pressed, its Updated. However, as no target has been assigned to the point, this 2nd point is not assigned to the QTouchEvent. Therefore, only one point is transferred to QPinchGestureRecognizer::recognize, which leads to the return QGestureRecognizer::FinishGesture. This means that this touch event has ended and all future events are no longer taken into account.