diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-10-21 17:31:55 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-10-23 21:14:23 +0200 |
commit | 88057e3407aa16d0a9dc9dcc6d0ea6174dce693b (patch) | |
tree | 83e8c67a6e8e6f9a5271075904c7a2a71813da3c | |
parent | 68d83e82f80ba3af439f1eed74b2b4a0cefc4f2a (diff) |
QSwipeGestureRecognizer: Fix gesture cancel on direction change.
Task-number: QTBUG-12736
Change-Id: I6d8d09843b45df17cb9158070f63b3397c5b4c07
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
-rw-r--r-- | src/widgets/kernel/qstandardgestures.cpp | 4 | ||||
-rw-r--r-- | tests/auto/widgets/gestures/qgesturerecognizer/tst_qgesturerecognizer.cpp | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/widgets/kernel/qstandardgestures.cpp b/src/widgets/kernel/qstandardgestures.cpp index 78a2c65060..0822c04033 100644 --- a/src/widgets/kernel/qstandardgestures.cpp +++ b/src/widgets/kernel/qstandardgestures.cpp @@ -341,10 +341,10 @@ QGestureRecognizer::Result QSwipeGestureRecognizer::recognize(QGesture *state, if (d->horizontalDirection == QSwipeGesture::NoDirection) d->horizontalDirection = horizontal; if (d->verticalDirection != vertical || d->horizontalDirection != horizontal) { - // the user has changed the direction! result = QGestureRecognizer::CancelGesture; + } else { + result = QGestureRecognizer::TriggerGesture; } - result = QGestureRecognizer::TriggerGesture; } else { if (q->state() != Qt::NoGesture) result = QGestureRecognizer::TriggerGesture; diff --git a/tests/auto/widgets/gestures/qgesturerecognizer/tst_qgesturerecognizer.cpp b/tests/auto/widgets/gestures/qgesturerecognizer/tst_qgesturerecognizer.cpp index 867c6eb629..833494f25e 100644 --- a/tests/auto/widgets/gestures/qgesturerecognizer/tst_qgesturerecognizer.cpp +++ b/tests/auto/widgets/gestures/qgesturerecognizer/tst_qgesturerecognizer.cpp @@ -268,6 +268,7 @@ void tst_QGestureRecognizer::pinchGesture() enum SwipeSubTest { SwipeLineSubTest, + SwipeChangeDirectionSubTest, }; void tst_QGestureRecognizer::swipeGesture_data() @@ -275,6 +276,7 @@ void tst_QGestureRecognizer::swipeGesture_data() QTest::addColumn<int>("swipeSubTest"); QTest::addColumn<bool>("gestureExpected"); QTest::newRow("Line") << int(SwipeLineSubTest) << true; + QTest::newRow("ChangeDirection") << int(SwipeChangeDirectionSubTest) << false; } void tst_QGestureRecognizer::swipeGesture() @@ -311,6 +313,10 @@ void tst_QGestureRecognizer::swipeGesture() case SwipeLineSubTest: linearSequence(5, moveDelta, swipeSequence, points, &widget); break; + case SwipeChangeDirectionSubTest: + linearSequence(5, moveDelta, swipeSequence, points, &widget); + linearSequence(3, QPoint(-moveDelta.x(), moveDelta.y()), swipeSequence, points, &widget); + break; } releaseSequence(swipeSequence, points, &widget); |