From 6a2a3b1259f802852a54a5bb15b3e60f669add97 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Fri, 23 Sep 2022 22:47:49 +0200 Subject: [PATCH] Fixed some fade transition issues in SystemView. --- es-app/src/views/SystemView.cpp | 17 +++++++++++++---- es-app/src/views/SystemView.h | 5 ++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/es-app/src/views/SystemView.cpp b/es-app/src/views/SystemView.cpp index 2b81b7dde..2a24d6811 100644 --- a/es-app/src/views/SystemView.cpp +++ b/es-app/src/views/SystemView.cpp @@ -35,6 +35,7 @@ SystemView::SystemView() , mNavigated {false} , mMaxFade {false} , mFadeTransitions {false} + , mTransitionAnim {false} { setSize(Renderer::getScreenWidth(), Renderer::getScreenHeight()); populate(); @@ -54,8 +55,10 @@ SystemView::~SystemView() void SystemView::onShow() { - if (mFadeTransitions) + if (mFadeTransitions) { finishAnimation(0); + mTransitionAnim = false; + } } void SystemView::onTransition() @@ -65,6 +68,9 @@ void SystemView::onTransition() for (auto& anim : mSystemElements[mPrimary->getCursor()].GIFAnimComponents) anim->setPauseAnimation(true); + + if (mFadeTransitions) + mTransitionAnim = true; } void SystemView::goToSystem(SystemData* system, bool animate) @@ -284,6 +290,9 @@ void SystemView::onCursorChanged(const CursorState& state) std::string transitionStyle {Settings::getInstance()->getString("TransitionStyle")}; mFadeTransitions = transitionStyle == "fade"; + if (startPos == endPos) + return; + Animation* anim; if (transitionStyle == "fade") { @@ -1252,10 +1261,10 @@ void SystemView::renderElements(const glm::mat4& parentTrans, bool abovePrimary) element->getZIndex() < primaryZIndex) element->setDimming(1.0f - mFadeOpacity); if (mFadeTransitions && isAnimationPlaying(0)) - element->setOpacity(mMaxFade ? 1.0f - mFadeOpacity : 0.0f); + element->setOpacity(1.0f - mFadeOpacity); else element->setOpacity(1.0f); - if (mNavigated && mMaxFade) + if (mFadeTransitions && mNavigated && mMaxFade) continue; element->render(elementTrans); } @@ -1278,7 +1287,7 @@ void SystemView::renderElements(const glm::mat4& parentTrans, bool abovePrimary) if (mLegacyMode) { if (mFadeTransitions && !abovePrimary) { if (mFadeTransitions && isAnimationPlaying(0)) - mLegacySystemInfo->setOpacity(mMaxFade ? 1.0f - mFadeOpacity : 0.0f); + mLegacySystemInfo->setOpacity(1.0f - mFadeOpacity); else mLegacySystemInfo->setOpacity(1.0f); } diff --git a/es-app/src/views/SystemView.h b/es-app/src/views/SystemView.h index e9a8ed400..462dd1c81 100644 --- a/es-app/src/views/SystemView.h +++ b/es-app/src/views/SystemView.h @@ -49,12 +49,14 @@ public: bool isSystemAnimationPlaying(unsigned char slot) { return mPrimary->isAnimationPlaying(slot); } void finishSystemAnimation(unsigned char slot) { - if (mFadeTransitions) { + if (mFadeTransitions && mTransitionAnim) { mPrimary->finishAnimation(slot); + mTransitionAnim = false; } else { finishAnimation(slot); mPrimary->finishAnimation(slot); + mMaxFade = false; } } @@ -144,6 +146,7 @@ private: bool mNavigated; bool mMaxFade; bool mFadeTransitions; + bool mTransitionAnim; }; #endif // ES_APP_VIEWS_SYSTEM_VIEW_H