CppEditor: Make sure all clangd-related widgets are enabled/disabled

... when the general clangd checkbox is toggled.

Change-Id: Icb2503e5e2d66cba4fb81a3dc7a891e8ed694132
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2021-11-02 16:42:48 +01:00
parent a6a1423421
commit 7e99926efd

View File

@@ -255,15 +255,16 @@ ClangdSettingsWidget::ClangdSettingsWidget(const ClangdSettings::Data &settingsD
layout->addLayout(formLayout);
layout->addStretch(1);
const auto toggleEnabled = [=](const bool checked) {
chooserLabel->setEnabled(checked);
d->clangdChooser.setEnabled(checked);
indexingLabel->setEnabled(checked);
d->indexingCheckBox.setEnabled(checked);
autoIncludeHeadersLabel->setEnabled(checked);
d->autoIncludeHeadersCheckBox.setEnabled(checked);
d->threadLimitSpinBox.setEnabled(checked);
d->versionWarningLabel.setEnabled(checked);
static const auto setWidgetsEnabled = [](QLayout *layout, bool enabled, const auto &f) -> void {
for (int i = 0; i < layout->count(); ++i) {
if (QWidget * const w = layout->itemAt(i)->widget())
w->setEnabled(enabled);
else if (QLayout * const l = layout->itemAt(i)->layout())
f(l, enabled, f);
}
};
const auto toggleEnabled = [formLayout](const bool checked) {
setWidgetsEnabled(formLayout, checked, setWidgetsEnabled);
};
connect(&d->useClangdCheckBox, &QCheckBox::toggled, toggleEnabled);
toggleEnabled(d->useClangdCheckBox.isChecked());