diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index 73d82393a0a..ba13edbb32e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -8,6 +8,7 @@ #include "cmakeprocess.h" #include "cmakeproject.h" #include "cmakeprojectconstants.h" +#include "cmakeprojectimporter.h" #include "cmakeprojectmanagertr.h" #include "cmakeprojectnodes.h" #include "cmakespecificsettings.h" @@ -362,6 +363,8 @@ void CMakeManager::reloadCMakePresets() project->setOldPresetKits(oldKits); + emit project->projectImporter()->cmakePresetsUpdated(); + Core::ModeManager::activateMode(ProjectExplorer::Constants::MODE_SESSION); Core::ModeManager::setFocusToCurrentMode(); } diff --git a/src/plugins/projectexplorer/projectimporter.h b/src/plugins/projectexplorer/projectimporter.h index 1bb19fc239d..3e67f09c06d 100644 --- a/src/plugins/projectexplorer/projectimporter.h +++ b/src/plugins/projectexplorer/projectimporter.h @@ -47,6 +47,9 @@ public: void addProject(Kit *k) const; void removeProject(Kit *k) const; +signals: + void cmakePresetsUpdated(); + protected: class UpdateGuard { diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index 77aa3d51dd4..5e593a5e65b 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -12,6 +12,7 @@ #include "project.h" #include "projectexplorericons.h" #include "projectexplorertr.h" +#include "projectimporter.h" #include "projectmanager.h" #include "projectwindow.h" #include "runsettingspropertiespage.h" diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index 406ddcb76df..5e67d291323 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -368,9 +368,22 @@ void TargetSetupPage::setProjectImporter(ProjectImporter *importer) if (d->m_widgetsWereSetUp) d->reset(); // Reset before changing the importer! + if (d->m_importer) { + disconnect(d->m_importer, &ProjectImporter::cmakePresetsUpdated, + this, &TargetSetupPage::initializePage); + } + + d->m_importer = importer; d->m_importWidget->setVisible(d->m_importer); + if (d->m_importer) { + // FIXME: Needed for the refresh of CMake preset kits created by + // CMakeProjectImporter + connect(d->m_importer, &ProjectImporter::cmakePresetsUpdated, + this, &TargetSetupPage::initializePage); + } + if (d->m_widgetsWereSetUp) initializePage(); }