summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-01-31 10:16:28 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-02-05 11:36:55 +0000
commitb9d3055e7218e6dc202047c4a341df51c8e8cd67 (patch)
tree46ad419a7bbba9f964a2e04f6e0604ff66fd6ad9 /src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
parent69565d6c88ad66e11817bd661c20af8395b6000e (diff)
downloadqt-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.cpp40
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