From 09805c1f803739ebbf5a4459005f4baac5b42803 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Wed, 17 Feb 2021 02:16:23 +1000 Subject: [PATCH] FullscreenUI: Fix controller navigation in disc change --- src/core/system.cpp | 5 ++++- src/core/system.h | 2 +- src/frontend-common/fullscreen_ui.cpp | 3 ++- src/frontend-common/imgui_fullscreen.cpp | 10 ++++++++++ src/frontend-common/imgui_fullscreen.h | 2 ++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/core/system.cpp b/src/core/system.cpp index d8e62f811..5f07ba9a2 100644 --- a/src/core/system.cpp +++ b/src/core/system.cpp @@ -1773,8 +1773,11 @@ bool HasMedia() return g_cdrom.HasMedia(); } -const std::string& GetMediaFileName() +std::string GetMediaFileName() { + if (!g_cdrom.HasMedia()) + return {}; + return g_cdrom.GetMediaFileName(); } diff --git a/src/core/system.h b/src/core/system.h index 43251da23..9c1098e3e 100644 --- a/src/core/system.h +++ b/src/core/system.h @@ -189,7 +189,7 @@ bool DumpVRAM(const char* filename); bool DumpSPURAM(const char* filename); bool HasMedia(); -const std::string& GetMediaFileName(); +std::string GetMediaFileName(); bool InsertMedia(const char* path); void RemoveMedia(); diff --git a/src/frontend-common/fullscreen_ui.cpp b/src/frontend-common/fullscreen_ui.cpp index 3e128137e..52d5fc67f 100644 --- a/src/frontend-common/fullscreen_ui.cpp +++ b/src/frontend-common/fullscreen_ui.cpp @@ -201,7 +201,8 @@ bool Initialize(CommonHostInterface* host_interface, SettingsInterface* settings bool HasActiveWindow() { - return s_current_main_window != MainWindowType::None; + return s_current_main_window != MainWindowType::None || s_save_state_selector_open || + ImGuiFullscreen::IsChoiceDialogOpen() || ImGuiFullscreen::IsFileSelectorOpen(); } void SystemCreated() diff --git a/src/frontend-common/imgui_fullscreen.cpp b/src/frontend-common/imgui_fullscreen.cpp index 5653035f3..1c81ba608 100644 --- a/src/frontend-common/imgui_fullscreen.cpp +++ b/src/frontend-common/imgui_fullscreen.cpp @@ -902,6 +902,11 @@ static void SetFileSelectorDirectory(std::string dir) PopulateFileSelectorItems(); } +bool IsFileSelectorOpen() +{ + return s_file_selector_open; +} + void OpenFileSelector(const char* title, bool select_directory, FileSelectorCallback callback, FileSelectorFilters filters, std::string initial_directory) { @@ -1017,6 +1022,11 @@ static std::string s_choice_dialog_title; static ChoiceDialogOptions s_choice_dialog_options; static ChoiceDialogCallback s_choice_dialog_callback; +bool IsChoiceDialogOpen() +{ + return s_choice_dialog_open; +} + void OpenChoiceDialog(const char* title, bool checkable, ChoiceDialogOptions options, ChoiceDialogCallback callback) { if (s_choice_dialog_open) diff --git a/src/frontend-common/imgui_fullscreen.h b/src/frontend-common/imgui_fullscreen.h index f26960267..43178647f 100644 --- a/src/frontend-common/imgui_fullscreen.h +++ b/src/frontend-common/imgui_fullscreen.h @@ -210,6 +210,7 @@ static ALWAYS_INLINE bool EnumChoiceButton(const char* title, const char* summar using FileSelectorCallback = std::function; using FileSelectorFilters = std::vector; +bool IsFileSelectorOpen(); void OpenFileSelector(const char* title, bool select_directory, FileSelectorCallback callback, FileSelectorFilters filters = FileSelectorFilters(), std::string initial_directory = std::string()); @@ -217,6 +218,7 @@ void CloseFileSelector(); using ChoiceDialogCallback = std::function; using ChoiceDialogOptions = std::vector>; +bool IsChoiceDialogOpen(); void OpenChoiceDialog(const char* title, bool checkable, ChoiceDialogOptions options, ChoiceDialogCallback callback); void CloseChoiceDialog();