Fix Flickable movementEnded() signal emission
authorAndras Becsi <andras.becsi@nokia.com>
Thu, 13 Sep 2012 13:18:19 +0000 (15:18 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 18 Sep 2012 15:14:22 +0000 (17:14 +0200)
commitc47b370f96a87393a622a87df8d1a3c79bd5b1b1
tree8afd9dbe9d79c44535a3d022c4a3e543ffd87b7a
parentdae9daaa9c79e61a721fbd5b00d449ae74d09035
Fix Flickable movementEnded() signal emission

In case the content was flicked horizontally so that the vertical
position did not change handleMouseReleaseEvent performed a fixup
for the vertical position to be an integer _before_ starting the
horizontal flick. For some large content the rounding fixup had
finished before the flicking animation started which resulted
in a premature emission of the movementEnded() signal.
This race condition did not affect vertical flicking because the
vertical animation had always been started before the horizontal
fixup was scheduled.

The issue was revealed by QQuickWebView which above a certain
velocity threshold locks the movement in one direction, thus
produces the exact same vertical position throughout a horizontal
pan gesture.

This patch removes the race condition by starting the flick
animation in either direction first then performing the
position fixup if needed.

There does not seem to be a reliable way to auto-test this.

Change-Id: Idc8fb59b0a6ead71c6cfc7083a386d51048ec50c
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
src/quick/items/qquickflickable.cpp