summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);