diff --git a/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp b/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
index 6b25d99ecf6..f8fcd68babe 100644
--- a/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
+++ b/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
@@ -59,7 +59,7 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
using namespace CppTools;
- m_ui.generalConfigurationGroupBox->setVisible(Utils::HostOsInfo::isWindowsHost());
+ m_ui.delayedTemplateParse->setVisible(Utils::HostOsInfo::isWindowsHost());
m_ui.clangSettings->setCurrentIndex(m_projectSettings.useGlobalConfig() ? 0 : 1);
@@ -78,8 +78,6 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
connect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed,
this, &ClangProjectSettingsWidget::syncOtherWidgetsToComboBox);
- connectToClangDiagnosticConfigsDialog(m_ui.manageButton);
-
syncOtherWidgetsToComboBox();
}
@@ -124,9 +122,13 @@ void ClangProjectSettingsWidget::syncOtherWidgetsToComboBox()
options.contains(QLatin1String{ClangProjectSettings::DelayedTemplateParsing}));
const bool isCustom = !m_projectSettings.useGlobalConfig();
- m_ui.generalConfigurationGroupBox->setEnabled(isCustom);
- m_ui.clangDiagnosticsLabel->setEnabled(isCustom);
- m_ui.clangDiagnosticConfigsSelectionWidget->setEnabled(isCustom);
+ m_ui.delayedTemplateParse->setEnabled(isCustom);
+
+ for (int i = 0; i < m_ui.clangDiagnosticConfigsSelectionWidget->layout()->count(); ++i) {
+ QWidget *widget = m_ui.clangDiagnosticConfigsSelectionWidget->layout()->itemAt(i)->widget();
+ if (widget)
+ widget->setEnabled(isCustom);
+ }
refreshDiagnosticConfigsWidgetFromSettings();
}
diff --git a/src/plugins/clangcodemodel/clangprojectsettingswidget.ui b/src/plugins/clangcodemodel/clangprojectsettingswidget.ui
index 00a0fe43322..88177c235f6 100644
--- a/src/plugins/clangcodemodel/clangprojectsettingswidget.ui
+++ b/src/plugins/clangcodemodel/clangprojectsettingswidget.ui
@@ -35,64 +35,18 @@
-
-
-
-
- 0
- 0
-
-
-
- General
-
-
-
-
-
-
- Parse templates in a MSVC-compliant way. This helps to parse headers for example from Active Template Library (ATL) or Windows Runtime Library (WRL).
+
+
+ Parse templates in a MSVC-compliant way. This helps to parse headers for example from Active Template Library (ATL) or Windows Runtime Library (WRL).
However, using the relaxed and extended rules means also that no highlighting/completion can be provided within template functions.
-
-
- Enable MSVC-compliant template parsing
-
-
-
-
+
+
+ Enable MSVC-compliant template parsing
+
-
-
-
-
-
-
- Diagnostic Configuration:
-
-
-
- -
-
-
- -
-
-
- Manage...
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
+
-
diff --git a/src/plugins/clangtools/clangtoolsconfigwidget.cpp b/src/plugins/clangtools/clangtoolsconfigwidget.cpp
index 45e7b4041ca..313c343194c 100644
--- a/src/plugins/clangtools/clangtoolsconfigwidget.cpp
+++ b/src/plugins/clangtools/clangtoolsconfigwidget.cpp
@@ -62,8 +62,6 @@ ClangToolsConfigWidget::ClangToolsConfigWidget(
m_ui->clangDiagnosticConfigsSelectionWidget->refresh(settings->savedDiagnosticConfigId());
- CppTools::connectToClangDiagnosticConfigsDialog(m_ui->manageButton);
-
connect(m_ui->clangDiagnosticConfigsSelectionWidget,
&CppTools::ClangDiagnosticConfigsSelectionWidget::currentConfigChanged,
this, [this](const Core::Id ¤tConfigId) {
diff --git a/src/plugins/clangtools/clangtoolsconfigwidget.ui b/src/plugins/clangtools/clangtoolsconfigwidget.ui
index 6d78aad6f4c..1119a745327 100644
--- a/src/plugins/clangtools/clangtoolsconfigwidget.ui
+++ b/src/plugins/clangtools/clangtoolsconfigwidget.ui
@@ -62,38 +62,7 @@
-
-
-
-
-
-
- Diagnostic Configuration:
-
-
-
- -
-
-
- -
-
-
- Manage...
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
+
diff --git a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
index e3038d3aa34..d4efc67f5ad 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
+++ b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
@@ -25,14 +25,63 @@
#include "clangdiagnosticconfigsselectionwidget.h"
+#include "clangdiagnosticconfigswidget.h"
#include "cppcodemodelsettings.h"
#include "cpptoolsreuse.h"
+#include
+
+#include
+#include
+#include
+#include
+#include
+
namespace CppTools {
-ClangDiagnosticConfigsSelectionWidget::ClangDiagnosticConfigsSelectionWidget(QWidget *parent)
- : QComboBox(parent)
+static void connectToClangDiagnosticConfigsDialog(QPushButton *button)
{
+ QObject::connect(button, &QPushButton::clicked, []() {
+ ClangDiagnosticConfigsWidget *widget = new ClangDiagnosticConfigsWidget;
+ widget->layout()->setMargin(0);
+ QDialog dialog;
+ dialog.setWindowTitle(widget->tr("Diagnostic Configurations"));
+ dialog.setLayout(new QVBoxLayout);
+ dialog.layout()->addWidget(widget);
+ auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+ dialog.layout()->addWidget(buttonsBox);
+ QObject::connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
+ QObject::connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
+
+ QObject::connect(&dialog, &QDialog::accepted, [widget]() {
+ QSharedPointer settings = codeModelSettings();
+ const ClangDiagnosticConfigs oldDiagnosticConfigs
+ = settings->clangCustomDiagnosticConfigs();
+ const ClangDiagnosticConfigs currentDiagnosticConfigs = widget->customConfigs();
+ if (oldDiagnosticConfigs != currentDiagnosticConfigs) {
+ settings->setClangCustomDiagnosticConfigs(currentDiagnosticConfigs);
+ settings->toSettings(Core::ICore::settings());
+ }
+ });
+ dialog.exec();
+ });
+}
+
+ClangDiagnosticConfigsSelectionWidget::ClangDiagnosticConfigsSelectionWidget(QWidget *parent)
+ : QWidget(parent)
+ , m_selectionComboBox(new QComboBox(this))
+{
+ auto *layout = new QHBoxLayout(this);
+ layout->setMargin(0);
+ setLayout(layout);
+ layout->addWidget(new QLabel(tr("Diagnostic Configuration:"), this));
+ layout->addWidget(m_selectionComboBox);
+ auto *manageButton = new QPushButton(tr("Manage..."), this);
+ layout->addWidget(manageButton);
+ layout->addStretch();
+
+ connectToClangDiagnosticConfigsDialog(manageButton);
+
refresh(codeModelSettings()->clangDiagnosticConfigId());
connectToCurrentIndexChanged();
@@ -40,13 +89,13 @@ ClangDiagnosticConfigsSelectionWidget::ClangDiagnosticConfigsSelectionWidget(QWi
Core::Id ClangDiagnosticConfigsSelectionWidget::currentConfigId() const
{
- return Core::Id::fromSetting(currentData());
+ return Core::Id::fromSetting(m_selectionComboBox->currentData());
}
void ClangDiagnosticConfigsSelectionWidget::connectToCurrentIndexChanged()
{
m_currentIndexChangedConnection
- = connect(this,
+ = connect(m_selectionComboBox,
static_cast(&QComboBox::currentIndexChanged),
this,
[this]() { emit currentConfigChanged(currentConfigId()); });
@@ -62,7 +111,7 @@ void ClangDiagnosticConfigsSelectionWidget::refresh(Core::Id id)
disconnectFromCurrentIndexChanged();
int configToSelectIndex = -1;
- clear();
+ m_selectionComboBox->clear();
m_diagnosticConfigsModel = ClangDiagnosticConfigsModel(
codeModelSettings()->clangCustomDiagnosticConfigs());
const int size = m_diagnosticConfigsModel.size();
@@ -70,14 +119,14 @@ void ClangDiagnosticConfigsSelectionWidget::refresh(Core::Id id)
const ClangDiagnosticConfig &config = m_diagnosticConfigsModel.at(i);
const QString displayName
= ClangDiagnosticConfigsModel::displayNameWithBuiltinIndication(config);
- addItem(displayName, config.id().toSetting());
+ m_selectionComboBox->addItem(displayName, config.id().toSetting());
if (id == config.id())
configToSelectIndex = i;
}
if (configToSelectIndex != -1)
- setCurrentIndex(configToSelectIndex);
+ m_selectionComboBox->setCurrentIndex(configToSelectIndex);
else
emit currentConfigChanged(currentConfigId());
diff --git a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h
index 597f11918ac..abcdacf3652 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h
+++ b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h
@@ -29,11 +29,15 @@
#include "clangdiagnosticconfigsmodel.h"
-#include
+#include
+
+QT_BEGIN_NAMESPACE
+class QComboBox;
+QT_END_NAMESPACE
namespace CppTools {
-class CPPTOOLS_EXPORT ClangDiagnosticConfigsSelectionWidget : public QComboBox
+class CPPTOOLS_EXPORT ClangDiagnosticConfigsSelectionWidget : public QWidget
{
Q_OBJECT
@@ -53,6 +57,8 @@ private:
QMetaObject::Connection m_currentIndexChangedConnection;
ClangDiagnosticConfigsModel m_diagnosticConfigsModel;
+
+ QComboBox *m_selectionComboBox = nullptr;
};
} // CppTools namespace
diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
index 6da9616e43f..54acaa8304d 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
+++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
@@ -32,14 +32,11 @@
#include "ui_clazychecks.h"
#include "ui_tidychecks.h"
-#include
-
#include
#include
#include
#include
-#include
#include
#include
#include
@@ -441,14 +438,14 @@ void ClangDiagnosticConfigsWidget::connectClazyRadioButtonClicked(QRadioButton *
void ClangDiagnosticConfigsWidget::connectConfigChooserCurrentIndex()
{
- connect(m_ui->configChooserList, &QListWidget::currentRowChanged, this,
- &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
+ connect(m_ui->configChooserList, &QListWidget::currentRowChanged,
+ this, &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
}
void ClangDiagnosticConfigsWidget::disconnectConfigChooserCurrentIndex()
{
- disconnect(m_ui->configChooserList, &QListWidget::currentRowChanged, this,
- &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
+ disconnect(m_ui->configChooserList, &QListWidget::currentRowChanged,
+ this, &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
}
void ClangDiagnosticConfigsWidget::connectDiagnosticOptionsChanged()
@@ -503,33 +500,4 @@ void ClangDiagnosticConfigsWidget::setupTabs()
m_ui->tabWidget->setCurrentIndex(0);
}
-void connectToClangDiagnosticConfigsDialog(QPushButton *button)
-{
- QObject::connect(button, &QPushButton::clicked, []() {
- ClangDiagnosticConfigsWidget *widget = new ClangDiagnosticConfigsWidget;
- QDialog dialog;
- dialog.setWindowTitle(widget->tr("Diagnostic Configurations"));
- dialog.setLayout(new QVBoxLayout);
- dialog.layout()->setMargin(0);
- dialog.layout()->setSpacing(0);
- dialog.layout()->addWidget(widget);
- auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
- dialog.layout()->addWidget(buttonsBox);
- QObject::connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
- QObject::connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
-
- QObject::connect(&dialog, &QDialog::accepted, [widget]() {
- QSharedPointer settings = codeModelSettings();
- const ClangDiagnosticConfigs oldDiagnosticConfigs
- = settings->clangCustomDiagnosticConfigs();
- const ClangDiagnosticConfigs currentDiagnosticConfigs = widget->customConfigs();
- if (oldDiagnosticConfigs != currentDiagnosticConfigs) {
- settings->setClangCustomDiagnosticConfigs(currentDiagnosticConfigs);
- settings->toSettings(Core::ICore::settings());
- }
- });
- dialog.exec();
- });
-}
-
} // CppTools namespace
diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.h b/src/plugins/cpptools/clangdiagnosticconfigswidget.h
index 4fbdd2ec40c..545f9cdebb0 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigswidget.h
+++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.h
@@ -119,6 +119,4 @@ private:
int m_selectedConfigIndex = 0;
};
-CPPTOOLS_EXPORT void connectToClangDiagnosticConfigsDialog(QPushButton *button);
-
} // CppTools namespace
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.cpp b/src/plugins/cpptools/cppcodemodelsettingspage.cpp
index 91706470fd9..c404c433d01 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.cpp
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.cpp
@@ -75,14 +75,12 @@ void CppCodeModelSettingsWidget::setupClangCodeModelWidgets()
m_ui->clangCodeModelIsDisabledHint->setVisible(!isClangActive);
m_ui->clangCodeModelIsEnabledHint->setVisible(isClangActive);
- for (int i = 0; i < m_ui->clangDiagnosticsLayout->count(); ++i) {
- QWidget *widget = m_ui->clangDiagnosticsLayout->itemAt(i)->widget();
+ for (int i = 0; i < m_ui->clangDiagnosticConfigsSelectionWidget->layout()->count(); ++i) {
+ QWidget *widget = m_ui->clangDiagnosticConfigsSelectionWidget->layout()->itemAt(i)->widget();
if (widget)
widget->setEnabled(isClangActive);
}
- connectToClangDiagnosticConfigsDialog(m_ui->manageButton);
-
connect(m_settings.data(), &CppCodeModelSettings::changed,
this, [this]() {
m_ui->clangDiagnosticConfigsSelectionWidget->refresh(
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.ui b/src/plugins/cpptools/cppcodemodelsettingspage.ui
index e706fba256d..4330ac268a8 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.ui
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.ui
@@ -98,38 +98,7 @@
-
-
-
-
-
-
- Diagnostic Configuration:
-
-
-
- -
-
-
- -
-
-
- Manage...
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
+
-