aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-09-29 23:34:52 +0200
committerTobias Hunger <tobias.hunger@qt.io>2017-10-24 11:10:30 +0000
commit3f73f3a4f408c855666f55889584df26948e0749 (patch)
tree473c87e146e191dfd6a14633ff50210dcd2f042b /src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp
parentf4cd9cdb6af19a1338a79f7c1f16964de14399de (diff)
CMake: Fix "CMake settings have changed on disk"
* Improve the UI by showing settings in CMake and the project * Fix setting CMake configuration to project Change-Id: I6e127344551fa00f3f7e6170465cb3dda2e4a634 Task-number: QTCREATORBUG-17555 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp')
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp
index 0abe72fd7d..6813b234a4 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp
@@ -286,7 +286,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
connect(m_resetButton, &QPushButton::clicked, m_configModel, &ConfigModel::resetAllChanges);
connect(m_reconfigureButton, &QPushButton::clicked, this, [this]() {
- m_buildConfiguration->setConfigurationForCMake(m_configModel->configurationChanges());
+ m_buildConfiguration->setConfigurationForCMake(m_configModel->configurationForCMake());
});
connect(m_unsetButton, &QPushButton::clicked, this, [this]() {
m_configModel->toggleUnsetFlag(mapToSource(m_configView, m_configView->currentIndex()));
@@ -320,7 +320,12 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
connect(m_buildConfiguration->target(), &ProjectExplorer::Target::kitChanged,
this, &CMakeBuildSettingsWidget::updateFromKit);
connect(m_buildConfiguration, &CMakeBuildConfiguration::enabledChanged,
- this, [this]() { setError(m_buildConfiguration->disabledReason()); });
+ this, [this]() {
+ setError(m_buildConfiguration->disabledReason());
+ setConfigurationForCMake();
+ });
+ connect(m_buildConfiguration, &CMakeBuildConfiguration::configurationForCMakeChanged,
+ this, [this]() { setConfigurationForCMake(); });
updateSelection(QModelIndex(), QModelIndex());
}
@@ -381,7 +386,19 @@ void CMakeBuildSettingsWidget::updateFromKit()
for (const CMakeConfigItem &i : config)
configHash.insert(QString::fromUtf8(i.key), i.expandedValue(k));
- m_configModel->setKitConfiguration(configHash);
+ m_configModel->setConfigurationFromKit(configHash);
+}
+
+void CMakeBuildSettingsWidget::setConfigurationForCMake()
+{
+ QHash<QString, QString> config;
+ const CMakeConfig configList = m_buildConfiguration->configurationForCMake();
+ for (const CMakeConfigItem &i : configList) {
+ config.insert(QString::fromUtf8(i.key),
+ CMakeConfigItem::expandedValueOf(m_buildConfiguration->target()->kit(),
+ i.key, configList));
+ }
+ m_configModel->setConfigurationForCMake(config);
}
void CMakeBuildSettingsWidget::updateSelection(const QModelIndex &current, const QModelIndex &previous)