diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index cbb71881..d3d225e5 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -160,6 +160,7 @@ void guiRenderLoop(void) { memset(&context.scratch_state, 0, sizeof(context.scratch_state)); currentOperatingMode = newMode; } + // If the transition marker is set, we need to make the next draw occur to the secondary buffer so we have something to transition to if (context.transitionMode != TransitionAnimation::None) { OLED::useSecondaryFramebuffer(true); diff --git a/source/Core/Threads/UI/logic/HomeScreen.cpp b/source/Core/Threads/UI/logic/HomeScreen.cpp index 3be11340..fd033410 100644 --- a/source/Core/Threads/UI/logic/HomeScreen.cpp +++ b/source/Core/Threads/UI/logic/HomeScreen.cpp @@ -37,7 +37,8 @@ OperatingMode handleHomeButtons(const ButtonState buttons, guiContext *cxt) { break; case BUTTON_F_SHORT: if (!isTipDisconnected()) { - cxt->transitionMode = TransitionAnimation::Left; + bool detailedView = getSettingValue(SettingsOptions::DetailedIDLE) && getSettingValue(SettingsOptions::DetailedSoldering); + cxt->transitionMode = detailedView ? TransitionAnimation::None : TransitionAnimation::Left; return OperatingMode::Soldering; } break; diff --git a/source/Core/Threads/UI/logic/Soldering.cpp b/source/Core/Threads/UI/logic/Soldering.cpp index 587308a9..c16525ad 100644 --- a/source/Core/Threads/UI/logic/Soldering.cpp +++ b/source/Core/Threads/UI/logic/Soldering.cpp @@ -47,6 +47,8 @@ OperatingMode handleSolderingButtons(const ButtonState buttons, guiContext *cxt) } return OperatingMode::Soldering; } + + bool detailedView = getSettingValue(SettingsOptions::DetailedIDLE) && getSettingValue(SettingsOptions::DetailedSoldering); // otherwise we are unlocked switch (buttons) { case BUTTON_NONE: @@ -56,7 +58,7 @@ OperatingMode handleSolderingButtons(const ButtonState buttons, guiContext *cxt) case BUTTON_BOTH: /*Fall through*/ case BUTTON_B_LONG: - cxt->transitionMode = TransitionAnimation::Right; + cxt->transitionMode = detailedView ? TransitionAnimation::None : TransitionAnimation::Right; return OperatingMode::HomeScreen; case BUTTON_F_LONG: // if boost mode is enabled turn it on @@ -142,10 +144,12 @@ OperatingMode gui_solderingMode(const ButtonState buttons, guiContext *cxt) { } else { ui_draw_soldering_basic_status(cxt->scratch_state.state2); } + + bool detailedView = getSettingValue(SettingsOptions::DetailedIDLE) && getSettingValue(SettingsOptions::DetailedSoldering); // Check if we should bail due to undervoltage for example if (checkExitSoldering()) { setBuzzer(false); - cxt->transitionMode = TransitionAnimation::Right; + cxt->transitionMode = detailedView ? TransitionAnimation::None : TransitionAnimation::Right; return OperatingMode::HomeScreen; } #ifdef NO_SLEEP_MODE @@ -153,7 +157,7 @@ OperatingMode gui_solderingMode(const ButtonState buttons, guiContext *cxt) { if (shouldShutdown()) { // shutdown currentTempTargetDegC = 0; - cxt->transitionMode = TransitionAnimation::Right; + cxt->transitionMode = detailedView ? TransitionAnimation::None : TransitionAnimation::Right; return OperatingMode::HomeScreen; } #endif