diff --git a/src/core/fullscreenui.cpp b/src/core/fullscreenui.cpp index 0795f9f93..5ecfe0973 100644 --- a/src/core/fullscreenui.cpp +++ b/src/core/fullscreenui.cpp @@ -383,13 +383,13 @@ void FullscreenUI::ClosePauseMenu() if (!VideoThread::HasGPUBackend()) return; - UnpauseForMenuClose(); - BeginTransition(SHORT_TRANSITION_TIME, []() { s_locals.current_pause_submenu = PauseSubMenu::None; s_locals.pause_menu_was_open = false; SwitchToMainWindow(MainWindowType::None); }); + + UnpauseForMenuClose(); } void FullscreenUI::ClosePauseMenuImmediately() @@ -493,8 +493,6 @@ void FullscreenUI::ReturnToMainWindow() void FullscreenUI::ReturnToMainWindow(float transition_time) { - UnpauseForMenuClose(); - BeginTransition(transition_time, []() { s_locals.previous_main_window = MainWindowType::None; s_locals.current_pause_submenu = PauseSubMenu::None; @@ -840,25 +838,32 @@ void FullscreenUI::ConfirmWithSafetyCheck(std::string action, bool check_achieve void FullscreenUI::RequestShutdown(bool save_state) { - SwitchToMainWindow(MainWindowType::None); - ConfirmWithSafetyCheck(FSUI_STR("shut down"), true, [save_state](bool result) { if (result) - Host::RunOnCoreThread([save_state]() { Host::RequestSystemShutdown(false, save_state, false); }); + { + BeginTransition(LONG_TRANSITION_TIME, [save_state]() { + Host::RunOnCoreThread([save_state]() { Host::RequestSystemShutdown(false, save_state, false); }); + }); + } else - ClosePauseMenuImmediately(); + { + ClosePauseMenu(); + } }); } void FullscreenUI::RequestRestart() { - SwitchToMainWindow(MainWindowType::None); - ConfirmWithSafetyCheck(FSUI_STR("restart"), false, [](bool result) { if (result) + { Host::RunOnCoreThread(System::ResetSystem); - - BeginTransition(LONG_TRANSITION_TIME, &ClosePauseMenuImmediately); + BeginTransition(LONG_TRANSITION_TIME, &ClosePauseMenuImmediately); + } + else + { + ClosePauseMenu(); + } }); } @@ -1762,7 +1767,7 @@ void FullscreenUI::DrawPauseMenu() { // skip submenu when we can't save anyway if (!has_game) - BeginTransition(LONG_TRANSITION_TIME, []() { RequestShutdown(false); }); + RequestShutdown(false); else BeginTransition([]() { switch_submenu(PauseSubMenu::Exit); }); } @@ -1773,18 +1778,22 @@ void FullscreenUI::DrawPauseMenu() { if (MenuButtonWithoutSummary(FSUI_ICONVSTR(ICON_PF_NAVIGATION_BACK, "Back To Pause Menu")) || WantsToCloseMenu()) + { BeginTransition([]() { switch_submenu(PauseSubMenu::None); }); + } else + { ImGui::SetItemDefaultFocus(); + } if (MenuButtonWithoutSummary(FSUI_ICONVSTR(ICON_FA_ARROWS_ROTATE, "Restart Game"))) RequestRestart(); if (MenuButtonWithoutSummary(FSUI_ICONVSTR(ICON_FA_FLOPPY_DISK, "Close and Save State"))) - BeginTransition(LONG_TRANSITION_TIME, []() { RequestShutdown(true); }); + RequestShutdown(true); if (MenuButtonWithoutSummary(FSUI_ICONVSTR(ICON_FA_POWER_OFF, "Close Without Saving"))) - BeginTransition(LONG_TRANSITION_TIME, []() { RequestShutdown(false); }); + RequestShutdown(false); } break; @@ -1792,9 +1801,13 @@ void FullscreenUI::DrawPauseMenu() { if (MenuButtonWithoutSummary(FSUI_ICONVSTR(ICON_PF_NAVIGATION_BACK, "Back To Pause Menu")) || WantsToCloseMenu()) + { BeginTransition([]() { switch_submenu(PauseSubMenu::None); }); + } else + { ImGui::SetItemDefaultFocus(); + } if (MenuButtonWithoutSummary(FSUI_ICONVSTR(ICON_FA_TROPHY, "Achievements"))) BeginTransition(&SwitchToAchievements);