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(m_sif); } ALWAYS_INLINE SettingsInterface* getSettingsInterface() const { return m_sif.get(); }