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();