diff --git a/autotests/test_gestures.cpp b/autotests/test_gestures.cpp index dc02818fd3..422613c8c5 100644 --- a/autotests/test_gestures.cpp +++ b/autotests/test_gestures.cpp @@ -19,8 +19,10 @@ class GestureTest : public QObject { Q_OBJECT private Q_SLOTS: - void testDirection_data(); - void testDirection(); + void testSwipeDirection_data(); + void testSwipeDirection(); + void testPinchDirection_data(); + void testPinchDirection(); // swipe only void testMinimumX_data(); @@ -52,28 +54,46 @@ private Q_SLOTS: void testSwipeGeometryStart(); }; -void GestureTest::testDirection_data() +void GestureTest::testSwipeDirection_data() { - QTest::addColumn("direction"); + QTest::addColumn("swipe_direction"); QTest::newRow("Up") << GestureDirection::Up; QTest::newRow("Left") << GestureDirection::Left; QTest::newRow("Right") << GestureDirection::Right; QTest::newRow("Down") << GestureDirection::Down; +} + +void GestureTest::testSwipeDirection() +{ + SwipeGesture gesture; + QCOMPARE(gesture.direction(), GestureDirection::Down); + QFETCH(GestureDirection, swipe_direction); + gesture.setDirection(swipe_direction); + QCOMPARE(gesture.direction(), swipe_direction); + // back to down + gesture.setDirection(GestureDirection::Down); + QCOMPARE(gesture.direction(), GestureDirection::Down); +} + +void GestureTest::testPinchDirection_data() +{ + QTest::addColumn("pinch_direction"); + QTest::newRow("Contracting") << GestureDirection::Contracting; QTest::newRow("Expanding") << GestureDirection::Expanding; } -void GestureTest::testDirection() +void GestureTest::testPinchDirection() { - SwipeGesture gesture; - QCOMPARE(gesture.direction(), 0); - QFETCH(GestureDirection, direction); - gesture.setDirection(direction); - QCOMPARE(gesture.direction(), direction); + PinchGesture gesture; + QCOMPARE(gesture.direction(), GestureDirection::Expanding); + QFETCH(GestureDirection, pinch_direction); + gesture.setDirection(pinch_direction); + QCOMPARE(gesture.direction(), pinch_direction); // back to down - gesture.setDirection(GestureDirection::Down); - QCOMPARE(gesture.direction(), GestureDirection::Down); + gesture.setDirection(GestureDirection::Expanding); + QCOMPARE(gesture.direction(), GestureDirection::Expanding); } void GestureTest::testMinimumX_data() diff --git a/src/gestures.cpp b/src/gestures.cpp index 8af734f036..4f382ff95d 100644 --- a/src/gestures.cpp +++ b/src/gestures.cpp @@ -367,6 +367,16 @@ void GestureRecognizer::endPinchGesture() // because fingers up m_currentSwipeAxis = Axis::None; } +GestureDirections SwipeGesture::direction() const +{ + return m_direction; +} + +void SwipeGesture::setDirection(GestureDirections direction) +{ + m_direction = direction; +} + void SwipeGesture::setMinimumX(int x) { m_minimumX = x; @@ -447,6 +457,16 @@ bool SwipeGesture::isMinimumDeltaRelevant() const return m_minimumDeltaRelevant; } +GestureDirections PinchGesture::direction() const +{ + return m_direction; +} + +void PinchGesture::setDirection(GestureDirections direction) +{ + m_direction = direction; +} + qreal PinchGesture::minimumScaleDelta() const { return m_minimumScaleDelta; @@ -490,14 +510,4 @@ QSet Gesture::acceptableFingerCounts() const { return m_validFingerCounts; } - -GestureDirections Gesture::direction() const -{ - return m_direction; -} - -void Gesture::setDirection(GestureDirections direction) -{ - m_direction = direction; -} } diff --git a/src/gestures.h b/src/gestures.h index d70b42277e..3cfbc31c92 100644 --- a/src/gestures.h +++ b/src/gestures.h @@ -50,12 +50,8 @@ public: bool isFingerCountAcceptable(uint fingers) const; QSet acceptableFingerCounts() const; - GestureDirections direction() const; - void setDirection(GestureDirections direction); - protected: explicit Gesture(QObject *parent); - GestureDirections m_direction; Q_SIGNALS: /** @@ -84,6 +80,9 @@ public: explicit SwipeGesture(QObject *parent = nullptr); ~SwipeGesture() override; + GestureDirections direction() const; + void setDirection(GestureDirections direction); + void setMinimumX(int x); int minimumX() const; bool minimumXIsRelevant() const; @@ -119,6 +118,7 @@ Q_SIGNALS: void deltaProgress(const QSizeF &delta); private: + GestureDirections m_direction = GestureDirection::Down; bool m_minimumXRelevant = false; int m_minimumX = 0; bool m_minimumYRelevant = false; @@ -138,6 +138,9 @@ public: explicit PinchGesture(QObject *parent = nullptr); ~PinchGesture() override; + GestureDirections direction() const; + void setDirection(GestureDirections direction); + qreal minimumScaleDelta() const; /** @@ -158,6 +161,7 @@ Q_SIGNALS: void progress(qreal); private: + GestureDirections m_direction = GestureDirection::Expanding; bool m_minimumScaleDeltaRelevant = false; qreal m_minimumScaleDelta = DEFAULT_UNIT_SCALE_DELTA; }; diff --git a/src/globalshortcuts.cpp b/src/globalshortcuts.cpp index 19767fa683..6e67a26077 100644 --- a/src/globalshortcuts.cpp +++ b/src/globalshortcuts.cpp @@ -128,6 +128,7 @@ void GlobalShortcutsManager::registerGesture(GestureDeviceType device, GestureDi if (isSwipeDirection(direction)) { std::unique_ptr gesture = std::make_unique(); gesture->addFingerCount(fingerCount); + gesture->setDirection(direction); gesture->setMinimumDelta(QSizeF(200, 200)); connect(gesture.get(), &SwipeGesture::progress, progressCallback); connect(gesture.get(), &Gesture::triggered, onUp, &QAction::trigger, Qt::QueuedConnection); @@ -136,12 +137,12 @@ void GlobalShortcutsManager::registerGesture(GestureDeviceType device, GestureDi } else if (isPinchDirection(direction)) { std::unique_ptr gesture = std::make_unique(); gesture->addFingerCount(fingerCount); + gesture->setDirection(direction); connect(gesture.get(), &PinchGesture::progress, progressCallback); connect(gesture.get(), &Gesture::triggered, onUp, &QAction::trigger, Qt::QueuedConnection); connect(gesture.get(), &Gesture::cancelled, onUp, &QAction::trigger, Qt::QueuedConnection); shortcut.pinchGesture = std::move(gesture); } - shortcut.gesture()->setDirection(direction); addIfNotExists(GlobalShortcut(std::move(shortcut), onUp), device); }