From 59ce9dc04bfc6c2d5b49852eb37739024e37beab Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Sat, 27 Jul 2024 14:41:25 +0200 Subject: [PATCH] CMakePM: Fix saving "Initial Configuration" values Amends 6c5717844db6cdaafc0cc47b5f765d0e9acd055a The CMakeBuildSystem::clearCMakeCache() would call BuildSystem::emitParsingFinished which would clear the configuration in the widget, effectively removing any "Initial Configuration" changes when clicking on the "Re-configure with Initial Parameters" button. This commit makes sure that the updateInitialCMakeArguments() function is called before CMakeBuildSystem::clearCMakeCache(), and that only the "Build > Clear CMake Configuration" action would "disableCMakeBuildMenuActions" which is what an user would expect. Fixes: QTCREATORBUG-31320 Change-Id: Ie7810c9bed000ca19a31a6ab8e7a281ae9f5e6f0 Reviewed-by: Alessandro Portale --- src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp | 4 ++-- src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp | 5 +++++ src/plugins/cmakeprojectmanager/cmakebuildsystem.h | 1 + src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index c3cae5ff62e..747659de3b8 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -621,10 +621,10 @@ void CMakeBuildSettingsWidget::reconfigureWithInitialParameters() if (reply != QMessageBox::Yes) return; - m_buildConfig->cmakeBuildSystem()->clearCMakeCache(); - updateInitialCMakeArguments(); + m_buildConfig->cmakeBuildSystem()->clearCMakeCache(); + if (ProjectExplorerPlugin::saveModifiedFiles()) m_buildConfig->cmakeBuildSystem()->runCMake(); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 4db4b78a09b..a150d82f9a5 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1239,6 +1239,11 @@ void CMakeBuildSystem::clearCMakeCache() path.removeRecursively(); emit configurationCleared(); +} + +void CMakeBuildSystem::disableCMakeBuildMenuActions() +{ + emitParsingStarted(); emitParsingFinished(false); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h index 32966c64bbb..b6827385908 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -77,6 +77,7 @@ public: bool persistCMakeState(); void clearCMakeCache(); + void disableCMakeBuildMenuActions(); // Context menu actions: void buildCMakeTarget(const QString &buildTarget); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index f3e512eebb0..b81b03bee6d 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -262,6 +262,7 @@ void CMakeManager::clearCMakeCache(BuildSystem *buildSystem) QTC_ASSERT(cmakeBuildSystem, return); cmakeBuildSystem->clearCMakeCache(); + cmakeBuildSystem->disableCMakeBuildMenuActions(); } void CMakeManager::runCMake(BuildSystem *buildSystem)