diff --git a/src/core/fullscreen_ui.cpp b/src/core/fullscreen_ui.cpp index 38ae12106..f5e066478 100644 --- a/src/core/fullscreen_ui.cpp +++ b/src/core/fullscreen_ui.cpp @@ -540,6 +540,7 @@ struct ALIGN_TO_CACHE_LINE UIState TransitionState transition_state = TransitionState::Inactive; MainWindowType current_main_window = MainWindowType::None; PauseSubMenu current_pause_submenu = PauseSubMenu::None; + MainWindowType previous_main_window = MainWindowType::None; bool initialized = false; bool tried_to_initialize = false; bool pause_menu_was_open = false; @@ -1169,6 +1170,7 @@ void FullscreenUI::SwitchToMainWindow(MainWindowType type) if (s_state.current_main_window == type) return; + s_state.previous_main_window = s_state.current_main_window; s_state.current_main_window = type; if (!AreAnyDialogsOpen()) { @@ -1182,14 +1184,10 @@ void FullscreenUI::SwitchToMainWindow(MainWindowType type) void FullscreenUI::ReturnToPreviousWindow() { - if (GPUThread::HasGPUBackend() && s_state.pause_menu_was_open) - { - BeginTransition([]() { SwitchToMainWindow(MainWindowType::PauseMenu); }); - } - else - { + if (s_state.previous_main_window == MainWindowType::None) ReturnToMainWindow(); - } + else + BeginTransition([window = s_state.previous_main_window]() { SwitchToMainWindow(window); }); } void FullscreenUI::ReturnToMainWindow() @@ -1199,6 +1197,7 @@ void FullscreenUI::ReturnToMainWindow() const float transition_time = GPUThread::HasGPUBackend() ? SHORT_TRANSITION_TIME : DEFAULT_TRANSITION_TIME; BeginTransition(transition_time, []() { + s_state.previous_main_window = MainWindowType::None; s_state.current_pause_submenu = PauseSubMenu::None; s_state.pause_menu_was_open = false;