Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.2.1, 6.2.2, 6.5.1
-
windows 10 20H2
qt version 6.2.1
-
G&UI Finishing 2023
Description
I compiled and ran the qt demo fingerpaint.
When my five fingers moved on the touch screen at the same time, the demo only drew one line.
Please see the attached video.
I debugged the qt source code and found the root cause of this issue.
The root cause is that some touch points do not have target, so it cannot be posted to widgets.
When I tap the screen with five fingers. Only one finger touches the screen first. So the first touch event has only 1 point.
The device type is TouchScreen and usingClosestWidget is false, so the target will not be set here.
Because the type of the first touch event is TouchBegin, the target of the touch point will be set in QApplicationPrivate::activateImplicitTouchGrab.
The touch event triggered by the first finger can be post to the widget.
The second touch event has 5 points. There is one point whose state is Updated. The state with 4 points is Pressed.
In QApplicationPrivate::translateRawTouchEvent, the closestWidgets of 4 points are all null. So these 4 points will not be set the target.
Because the state of the touch event is TouchUpdate, QApplicationPrivate::activateImplicitTouchGrab will not be called.
These 4 points have no target, so they will not be posted to the widget.
I don't know how to fix this issue. If anyone has any ideas , please let me know.