summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2014-10-21 17:31:55 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2014-10-23 21:14:23 +0200
commit88057e3407aa16d0a9dc9dcc6d0ea6174dce693b (patch)
tree83e8c67a6e8e6f9a5271075904c7a2a71813da3c
parent68d83e82f80ba3af439f1eed74b2b4a0cefc4f2a (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.cpp4
-rw-r--r--tests/auto/widgets/gestures/qgesturerecognizer/tst_qgesturerecognizer.cpp6
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);