diff options
author | Romain Pokrzywka <romain.pokrzywka@bluescape.com> | 2018-08-22 11:31:34 -0500 |
---|---|---|
committer | Romain Pokrzywka <romain.pokrzywka@gmail.com> | 2018-08-30 04:47:04 +0000 |
commit | d02f888417c144963c929512f5cb3a0178af9fb4 (patch) | |
tree | ded4a5d3c5e8b31922b66f9e22670d41fd1aebfa /qtbase.pro | |
parent | 81e298a51d08c510457b4a26b37c0d4aac5eba65 (diff) |
Windows QPA: Fix duplicate Pointer Touch events and missing TouchCancel
translateTouchEvent needs to filter events based on the message type
passed in msg, as Windows sends more than just down/up/update events,
it also sends enter/leave for each touch and occasionally a few more.
One of them is WM_POINTERCAPTURECHANGED which indicates a general loss
of touch input, which needs to be translated to a touch cancel event.
Ignore WM_POINTERENTER/WM_POINTERLEAVE events as they result in sending
duplicate Qt::TouchPointPressed/Qt::TouchPointReleased events otherwise.
Also avoid sending duplicate events for each additional touchpoint:
Windows already bundles all available touchpoints for a touch event
when calling GetPointerFrameTouchInfo, so we get all points at once,
but we'll still receive other events for each additional touchpoint,
resulting in reading the same bundled data again for each one and
sending duplicate events to QWindowSystemInterface.
Use SkipPointerFrameMessages() to avoid receiving the additional
events for the frame we just processed.
Finally, add raw event logging when the platform verbose level is >1.
Change-Id: I55d840285f642a00f6ffcda4a3efd7ae3985310b
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Diffstat (limited to 'qtbase.pro')
0 files changed, 0 insertions, 0 deletions