From dcea77f2dd18c5679f955612384aecac28822e58 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 22 Aug 2019 13:52:10 +0200 Subject: [PATCH] ProjectExplorer: Update build directories in target setup page ... on a kit update. Our default build directory template references the kit name, so changes to the name should update the default value. Fixes: QTCREATORBUG-19453 Change-Id: Iffbdd95043be5137696e5af021d4735f494d47d7 Reviewed-by: hjk --- .../projectexplorer/targetsetupwidget.cpp | 20 +++++++++++++++++++ .../projectexplorer/targetsetupwidget.h | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/targetsetupwidget.cpp b/src/plugins/projectexplorer/targetsetupwidget.cpp index db738a105dd..e6cbff14604 100644 --- a/src/plugins/projectexplorer/targetsetupwidget.cpp +++ b/src/plugins/projectexplorer/targetsetupwidget.cpp @@ -238,6 +238,7 @@ void TargetSetupWidget::update(const Kit::Predicate &predicate) setEnabled(true); m_detailsWidget->setIcon(kit()->isValid() ? kit()->icon() : Icons::CRITICAL.icon()); m_detailsWidget->setToolTip(m_kit->toHtml()); + updateDefaultBuildDirectories(); } const QList TargetSetupWidget::buildInfoList(const Kit *k, const FilePath &projectPath) @@ -270,6 +271,24 @@ void TargetSetupWidget::clear() emit selectedToggled(); } +void TargetSetupWidget::updateDefaultBuildDirectories() +{ + for (const BuildInfo &buildInfo : buildInfoList(m_kit, m_projectPath)) { + if (!buildInfo.factory()) + continue; + for (BuildInfoStore &buildInfoStore : m_infoStore) { + if (buildInfoStore.buildInfo.buildType == buildInfo.buildType) { + if (!buildInfoStore.customBuildDir) { + m_ignoreChange = true; + buildInfoStore.pathChooser->setFileName(buildInfo.buildDirectory); + m_ignoreChange = false; + } + break; + } + } + } +} + void TargetSetupWidget::checkBoxToggled(bool b) { auto box = qobject_cast(sender()); @@ -301,6 +320,7 @@ void TargetSetupWidget::pathChanged() }); QTC_ASSERT(it != m_infoStore.end(), return); it->buildInfo.buildDirectory = pathChooser->fileName(); + it->customBuildDir = true; reportIssues(static_cast(std::distance(m_infoStore.begin(), it))); } diff --git a/src/plugins/projectexplorer/targetsetupwidget.h b/src/plugins/projectexplorer/targetsetupwidget.h index 8966e491851..80f64ad9181 100644 --- a/src/plugins/projectexplorer/targetsetupwidget.h +++ b/src/plugins/projectexplorer/targetsetupwidget.h @@ -86,6 +86,7 @@ private: void reportIssues(int index); QPair findIssues(const BuildInfo &info); void clear(); + void updateDefaultBuildDirectories(); Kit *m_kit; Utils::FilePath m_projectPath; @@ -109,11 +110,12 @@ private: Utils::PathChooser *pathChooser = nullptr; bool isEnabled = false; bool hasIssues = false; + bool customBuildDir = false; }; std::vector m_infoStore; bool m_ignoreChange = false; - int m_selected = 0; // Number of selected "buildconfiguartions" + int m_selected = 0; // Number of selected "buildconfigurations" }; } // namespace Internal