diff --git a/src/common/config.cpp b/src/common/config.cpp index eed9df8f5..e13ef59a6 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -325,11 +325,13 @@ void setMainWindowGeometry(u32 x, u32 y, u32 w, u32 h) { main_window_geometry_w = w; main_window_geometry_h = h; } -void addGameInstallDir(const std::filesystem::path& dir) { +bool addGameInstallDir(const std::filesystem::path& dir) { if (std::find(settings_install_dirs.begin(), settings_install_dirs.end(), dir) == settings_install_dirs.end()) { settings_install_dirs.push_back(dir); + return true; } + return false; } void removeGameInstallDir(const std::filesystem::path& dir) { auto iterator = std::find(settings_install_dirs.begin(), settings_install_dirs.end(), dir); diff --git a/src/common/config.h b/src/common/config.h index 4238d6721..4fdcf4e90 100644 --- a/src/common/config.h +++ b/src/common/config.h @@ -85,7 +85,7 @@ bool vkCrashDiagnosticEnabled(); // Gui void setMainWindowGeometry(u32 x, u32 y, u32 w, u32 h); -void addGameInstallDir(const std::filesystem::path& dir); +bool addGameInstallDir(const std::filesystem::path& dir); void removeGameInstallDir(const std::filesystem::path& dir); void setAddonInstallDir(const std::filesystem::path& dir); void setMainWindowTheme(u32 theme); diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index 199939f68..d663b286d 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -236,7 +236,9 @@ SettingsDialog::SettingsDialog(std::span physical_devices, QWidge QFileDialog::getExistingDirectory(this, tr("Directory to install games")); auto file_path = Common::FS::PathFromQString(file_path_string); if (!file_path.empty()) { - Config::addGameInstallDir(file_path); + if (!Config::addGameInstallDir(file_path)) { + return; + } QListWidgetItem* item = new QListWidgetItem(file_path_string); ui->gameFoldersListWidget->addItem(item); }