diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-01-31 10:16:28 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-02-05 11:36:55 +0000 |
commit | b9d3055e7218e6dc202047c4a341df51c8e8cd67 (patch) | |
tree | 46ad419a7bbba9f964a2e04f6e0604ff66fd6ad9 /src/plugins/cpptools/clangdiagnosticconfigswidget.cpp | |
parent | 69565d6c88ad66e11817bd661c20af8395b6000e (diff) | |
download | qt-creator-b9d3055e7218e6dc202047c4a341df51c8e8cd67.tar.gz |
Clang: Allow to forward warnings flags from build system
Change-Id: I47ebb1ce4f3b5544408eb1d0f891ed5090394282
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src/plugins/cpptools/clangdiagnosticconfigswidget.cpp')
-rw-r--r-- | src/plugins/cpptools/clangdiagnosticconfigswidget.cpp | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp index 22e7a93b8f..a9a32a77bd 100644 --- a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp +++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp @@ -38,6 +38,7 @@ #include <projectexplorer/selectablefilesmodel.h> #include <utils/algorithm.h> +#include <utils/executeondestruction.h> #include <utils/qtcassert.h> #include <utils/utilsicons.h> @@ -611,7 +612,7 @@ ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(const Core::Id &confi this, &ClangDiagnosticConfigsWidget::onCopyButtonClicked); connect(m_ui->removeButton, &QPushButton::clicked, this, &ClangDiagnosticConfigsWidget::onRemoveButtonClicked); - connectDiagnosticOptionsChanged(); + connectClangOnlyOptionsChanged(); connect(m_tidyChecks->checksPrefixesTree, &QTreeView::clicked, @@ -734,14 +735,17 @@ static QStringList normalizeDiagnosticInputOptions(const QString &options) return options.simplified().split(QLatin1Char(' '), QString::SkipEmptyParts); } -void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited() +void ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged() { - // Clean up input + const bool useBuildSystemWarnings = m_clangBaseChecks->useFlagsFromBuildSystemCheckBox + ->isChecked(); + + // Clean up options input const QString diagnosticOptions = m_clangBaseChecks->diagnosticOptionsTextEdit->document() ->toPlainText(); const QStringList normalizedOptions = normalizeDiagnosticInputOptions(diagnosticOptions); - // Validate + // Validate options input const QString errorMessage = validateDiagnosticOptions(normalizedOptions); updateValidityWidgets(errorMessage); if (!errorMessage.isEmpty()) { @@ -754,6 +758,7 @@ void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited() // Commit valid changes ClangDiagnosticConfig updatedConfig = selectedConfig(); updatedConfig.setClangOptions(normalizedOptions); + updatedConfig.setUseBuildSystemWarnings(useBuildSystemWarnings); updateConfig(updatedConfig); } @@ -793,11 +798,17 @@ void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox() if (isConfigChooserEmpty()) return; + disconnectClangOnlyOptionsChanged(); + Utils::ExecuteOnDestruction e([this]() { connectClangOnlyOptionsChanged(); }); + const ClangDiagnosticConfig &config = selectedConfig(); // Update main button row m_ui->removeButton->setEnabled(!config.isReadOnly()); + // Update check box + m_clangBaseChecks->useFlagsFromBuildSystemCheckBox->setChecked(config.useBuildSystemWarnings()); + // Update Text Edit const QString options = m_notAcceptedOptions.contains(config.id()) ? m_notAcceptedOptions.value(config.id()) @@ -894,11 +905,8 @@ bool ClangDiagnosticConfigsWidget::isConfigChooserEmpty() const void ClangDiagnosticConfigsWidget::setDiagnosticOptions(const QString &options) { - if (options != m_clangBaseChecks->diagnosticOptionsTextEdit->document()->toPlainText()) { - disconnectDiagnosticOptionsChanged(); + if (options != m_clangBaseChecks->diagnosticOptionsTextEdit->document()->toPlainText()) m_clangBaseChecks->diagnosticOptionsTextEdit->document()->setPlainText(options); - connectDiagnosticOptionsChanged(); - } const QString errorMessage = validateDiagnosticOptions(normalizeDiagnosticInputOptions(options)); @@ -968,20 +976,28 @@ void ClangDiagnosticConfigsWidget::disconnectConfigChooserCurrentIndex() this, &ClangDiagnosticConfigsWidget::onCurrentConfigChanged); } -void ClangDiagnosticConfigsWidget::connectDiagnosticOptionsChanged() +void ClangDiagnosticConfigsWidget::connectClangOnlyOptionsChanged() { + connect(m_clangBaseChecks->useFlagsFromBuildSystemCheckBox, + &QCheckBox::stateChanged, + this, + &ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged); connect(m_clangBaseChecks->diagnosticOptionsTextEdit->document(), &QTextDocument::contentsChanged, this, - &ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited); + &ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged); } -void ClangDiagnosticConfigsWidget::disconnectDiagnosticOptionsChanged() +void ClangDiagnosticConfigsWidget::disconnectClangOnlyOptionsChanged() { + disconnect(m_clangBaseChecks->useFlagsFromBuildSystemCheckBox, + &QCheckBox::stateChanged, + this, + &ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged); disconnect(m_clangBaseChecks->diagnosticOptionsTextEdit->document(), &QTextDocument::contentsChanged, this, - &ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited); + &ClangDiagnosticConfigsWidget::onClangOnlyOptionsChanged); } ClangDiagnosticConfigs ClangDiagnosticConfigsWidget::customConfigs() const |