From 2d4191f8ce57e2d1c7a3a5b000cbd30c9f989117 Mon Sep 17 00:00:00 2001 From: Stenzek <stenzek@gmail.com> Date: Mon, 18 Dec 2023 13:34:12 +1000 Subject: [PATCH] Qt: Fix game properties dialogs keeping app open --- src/duckstation-qt/mainwindow.cpp | 2 ++ src/duckstation-qt/settingswindow.cpp | 9 +++++++++ src/duckstation-qt/settingswindow.h | 1 + 3 files changed, 12 insertions(+) diff --git a/src/duckstation-qt/mainwindow.cpp b/src/duckstation-qt/mainwindow.cpp index 8b39fb84a..c7d31c943 100644 --- a/src/duckstation-qt/mainwindow.cpp +++ b/src/duckstation-qt/mainwindow.cpp @@ -770,6 +770,8 @@ void MainWindow::destroySubWindows() m_settings_window->deleteLater(); m_settings_window = nullptr; } + + SettingsWindow::closeGamePropertiesDialogs(); } void MainWindow::populateGameListContextMenu(const GameList::Entry* entry, QWidget* parent_window, QMenu* menu) diff --git a/src/duckstation-qt/settingswindow.cpp b/src/duckstation-qt/settingswindow.cpp index a04588c1c..d467901c3 100644 --- a/src/duckstation-qt/settingswindow.cpp +++ b/src/duckstation-qt/settingswindow.cpp @@ -520,3 +520,12 @@ void SettingsWindow::openGamePropertiesDialog(const std::string& path, const std dialog->setWindowTitle(window_title); dialog->show(); } + +void SettingsWindow::closeGamePropertiesDialogs() +{ + for (SettingsWindow* dialog : s_open_game_properties_dialogs) + { + dialog->close(); + dialog->deleteLater(); + } +} diff --git a/src/duckstation-qt/settingswindow.h b/src/duckstation-qt/settingswindow.h index 1a050f3db..90612010f 100644 --- a/src/duckstation-qt/settingswindow.h +++ b/src/duckstation-qt/settingswindow.h @@ -44,6 +44,7 @@ public: ~SettingsWindow(); static void openGamePropertiesDialog(const std::string& path, const std::string& serial, DiscRegion region); + static void closeGamePropertiesDialogs(); ALWAYS_INLINE bool isPerGameSettings() const { return static_cast<bool>(m_sif); } ALWAYS_INLINE SettingsInterface* getSettingsInterface() const { return m_sif.get(); }