folio: Fix some state transitions

Fixes some potential state problems when transitioning to the app
drawer.
This commit is contained in:
Devin Lin 2025-12-05 11:51:41 -05:00
parent e480114d53
commit e5cb775830
2 changed files with 12 additions and 4 deletions

View file

@ -73,7 +73,9 @@ void HomeScreenState::init()
m_closeSearchWidgetAnim = setupAnimation("searchWidgetY", animDuration, QEasingCurve::OutExpo, SEARCH_WIDGET_OPEN_DIST); m_closeSearchWidgetAnim = setupAnimation("searchWidgetY", animDuration, QEasingCurve::OutExpo, SEARCH_WIDGET_OPEN_DIST);
connect(m_closeSearchWidgetAnim, &QPropertyAnimation::finished, this, [this]() { connect(m_closeSearchWidgetAnim, &QPropertyAnimation::finished, this, [this]() {
setViewState(ViewState::PageView); if (m_viewState == ViewState::SearchWidgetView) {
setViewState(ViewState::PageView);
}
}); });
m_pageAnim = setupAnimation("pageViewX", animDuration, QEasingCurve::OutExpo, 0); m_pageAnim = setupAnimation("pageViewX", animDuration, QEasingCurve::OutExpo, 0);
@ -87,7 +89,9 @@ void HomeScreenState::init()
m_closeFolderAnim = setupAnimation("folderOpenProgress", animDuration, QEasingCurve::OutExpo, 0.0); m_closeFolderAnim = setupAnimation("folderOpenProgress", animDuration, QEasingCurve::OutExpo, 0.0);
connect(m_closeFolderAnim, &QPropertyAnimation::finished, this, [this]() { connect(m_closeFolderAnim, &QPropertyAnimation::finished, this, [this]() {
setViewState(ViewState::PageView); if (m_viewState == ViewState::FolderView) {
setViewState(ViewState::PageView);
}
setCurrentFolder(nullptr); setCurrentFolder(nullptr);
setFolderViewX(0); // reset to first page setFolderViewX(0); // reset to first page
m_folderPageNum = 0; m_folderPageNum = 0;
@ -107,7 +111,9 @@ void HomeScreenState::init()
m_closeSettingsAnim = setupAnimation("settingsOpenProgress", animDuration, QEasingCurve::InOutExpo, 0.0); m_closeSettingsAnim = setupAnimation("settingsOpenProgress", animDuration, QEasingCurve::InOutExpo, 0.0);
connect(m_closeSettingsAnim, &QPropertyAnimation::finished, this, [this]() { connect(m_closeSettingsAnim, &QPropertyAnimation::finished, this, [this]() {
setViewState(ViewState::PageView); if (m_viewState == ViewState::SettingsView) {
setViewState(ViewState::PageView);
}
}); });
connect(this, &HomeScreenState::viewWidthChanged, this, [this]() { connect(this, &HomeScreenState::viewWidthChanged, this, [this]() {

View file

@ -124,7 +124,9 @@ Item {
interactive: root.interactive && interactive: root.interactive &&
settingsLoader.homeScreenInteractive && settingsLoader.homeScreenInteractive &&
(appDrawer.flickable.contentY <= 10 || // disable the swipe area when we are swiping in the app drawer, and not in drag-and-drop (appDrawer.flickable.atYBeginning || // there are cases where contentY > 0 but atYBeginning is true
appDrawer.flickable.contentY <= 10 ||
// disable the swipe area when we are swiping in the app drawer, and not in drag-and-drop
folio.HomeScreenState.swipeState === Folio.HomeScreenState.AwaitingDraggingDelegate || folio.HomeScreenState.swipeState === Folio.HomeScreenState.AwaitingDraggingDelegate ||
folio.HomeScreenState.swipeState === Folio.HomeScreenState.DraggingDelegate || folio.HomeScreenState.swipeState === Folio.HomeScreenState.DraggingDelegate ||
folio.HomeScreenState.swipeState === Folio.HomeScreenState.SwipingAppDrawerGrid || folio.HomeScreenState.swipeState === Folio.HomeScreenState.SwipingAppDrawerGrid ||