iOS: Gracefully handle cancelling of subset of active touches
authorTor Arne Vestbø <tor.arne.vestbo@digia.com>
Tue, 6 May 2014 14:37:54 +0000 (16:37 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 8 May 2014 11:50:22 +0000 (13:50 +0200)
commit36caeadb4db9fab1cf581f9a3bb3c4a2e14de49a
tree510934355a4b5ae7ec46811f8415323309860211
parentd7e0c926b5183f94abda4b2ebfd505d9ae68e541
iOS: Gracefully handle cancelling of subset of active touches

When applying the five-finger pinch gesture, we get a touchesCancelled
callback with all five touch points, but the pinch gesture ends when
the second to last finger is released from the screen. The last finger
will not emit any more touch events, _but_, will contribute to starting
another pinch gesture. That second pinch gesture will _not_ trigger a
touchesCancelled event when starting, but as each finger is released,
and we may get touchesMoved events for the remaining fingers.

The event property 'allTouches' contains one less touch point than it
should, so this behavior is likely a bug in the iOS system gesture
recognizer, but have to take it into account when maintaining the Qt
touch state.

We do this by assuming that there are no cases where a sub-set of the
active touch events are intentionally cancelled, and always clear the
list of active touches.

Task-number: QTBUG-37304
Change-Id: Icee79978508ecbc6854c0fb55d2da48b99d92f96
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
src/plugins/platforms/ios/qioswindow.mm