diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index c247c53493..5547e34987 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -99,6 +99,8 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_, } }); connect(ui_tab.get(), &ConfigureUi::LanguageChanged, this, &ConfigureDialog::OnLanguageChanged); + connect(filesystem_tab.get(), &ConfigureFilesystem::ExternalContentDirsChanged, this, + &ConfigureDialog::ExternalContentDirsChanged); connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, &ConfigureDialog::UpdateVisibleTabs); diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h index 4f9cf79645..9b018a3ae4 100644 --- a/src/yuzu/configuration/configure_dialog.h +++ b/src/yuzu/configuration/configure_dialog.h @@ -62,6 +62,7 @@ private slots: signals: void LanguageChanged(const QString& locale); + void ExternalContentDirsChanged(); private: void changeEvent(QEvent* event) override; diff --git a/src/yuzu/configuration/configure_filesystem.cpp b/src/yuzu/configuration/configure_filesystem.cpp index 22b2dc802d..2842a86729 100644 --- a/src/yuzu/configuration/configure_filesystem.cpp +++ b/src/yuzu/configuration/configure_filesystem.cpp @@ -107,10 +107,15 @@ void ConfigureFilesystem::ApplyConfiguration() { UISettings::values.cache_game_list = ui->cache_game_list->isChecked(); - Settings::values.external_content_dirs.clear(); + std::vector new_dirs; + new_dirs.reserve(ui->external_content_list->count()); for (int i = 0; i < ui->external_content_list->count(); ++i) { - Settings::values.external_content_dirs.push_back( - ui->external_content_list->item(i)->text().toStdString()); + new_dirs.push_back(ui->external_content_list->item(i)->text().toStdString()); + } + + if (new_dirs != Settings::values.external_content_dirs) { + Settings::values.external_content_dirs = std::move(new_dirs); + emit ExternalContentDirsChanged(); } } diff --git a/src/yuzu/configuration/configure_filesystem.h b/src/yuzu/configuration/configure_filesystem.h index 9999b39fe4..a433c9c694 100644 --- a/src/yuzu/configuration/configure_filesystem.h +++ b/src/yuzu/configuration/configure_filesystem.h @@ -24,6 +24,9 @@ public: void ApplyConfiguration(); +signals: + void ExternalContentDirsChanged(); + private: void changeEvent(QEvent* event) override; diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp index fbe32dc6a8..60ef7ab626 100644 --- a/src/yuzu/main_window.cpp +++ b/src/yuzu/main_window.cpp @@ -3387,6 +3387,8 @@ void MainWindow::OnConfigure() { !multiplayer_state->IsHostingPublicRoom()); connect(&configure_dialog, &ConfigureDialog::LanguageChanged, this, &MainWindow::OnLanguageChanged); + connect(&configure_dialog, &ConfigureDialog::ExternalContentDirsChanged, this, + &MainWindow::OnGameListRefresh); const auto result = configure_dialog.exec(); if (result != QDialog::Accepted && !UISettings::values.configuration_applied &&