diff --git a/containments/homescreens/folio/homescreenstate.cpp b/containments/homescreens/folio/homescreenstate.cpp index ab84c058..9c09daa9 100644 --- a/containments/homescreens/folio/homescreenstate.cpp +++ b/containments/homescreens/folio/homescreenstate.cpp @@ -971,6 +971,11 @@ void HomeScreenState::swipeEnded() setSwipeState(SwipeState::None); } +void HomeScreenState::swipeCancelled() +{ + setSwipeState(SwipeState::None); +} + void HomeScreenState::swipeMoved(qreal totalDeltaX, qreal totalDeltaY, qreal deltaX, qreal deltaY) { m_movingUp = deltaY > 0; diff --git a/containments/homescreens/folio/homescreenstate.h b/containments/homescreens/folio/homescreenstate.h index 9614ba8c..40053f36 100644 --- a/containments/homescreens/folio/homescreenstate.h +++ b/containments/homescreens/folio/homescreenstate.h @@ -341,6 +341,7 @@ public Q_SLOTS: // from SwipeArea void swipeStarted(qreal deltaX, qreal deltaY); void swipeEnded(); + void swipeCancelled(); void swipeMoved(qreal totalDeltaX, qreal totalDeltaY, qreal deltaX, qreal deltaY); private: diff --git a/containments/homescreens/folio/package/contents/ui/HomeScreen.qml b/containments/homescreens/folio/package/contents/ui/HomeScreen.qml index 215307cf..e03f5d5f 100644 --- a/containments/homescreens/folio/package/contents/ui/HomeScreen.qml +++ b/containments/homescreens/folio/package/contents/ui/HomeScreen.qml @@ -121,6 +121,11 @@ Item { homeScreenState.swipeEnded(); } onSwipeMove: (totalDeltaX, totalDeltaY, deltaX, deltaY) => { + // cancel swipe when settings component is opening to prevent conflicts + if (folio.HomeScreenState.settingsOpenProgress && folio.HomeScreenState.viewState !== Folio.HomeScreenState.SettingsView) { + homeScreenState.swipeCancelled(); + return; + } homeScreenState.swipeMoved(totalDeltaX, totalDeltaY, deltaX, deltaY); }