diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.cpp b/src/plugins/cpptools/cppcodemodelsettingspage.cpp index 1e64817b370..f32ce55ff93 100644 --- a/src/plugins/cpptools/cppcodemodelsettingspage.cpp +++ b/src/plugins/cpptools/cppcodemodelsettingspage.cpp @@ -64,23 +64,15 @@ void CppCodeModelSettingsWidget::setSettings(const QSharedPointerignorePCHCheckBox->setChecked(s->pchUsage() == CppCodeModelSettings::PchUse_None); + setupPchCheckBox(); } void CppCodeModelSettingsWidget::applyToSettings() const { bool changed = false; - if (applyClangCodeModelWidgetsToSettings()) - changed = true; - - if (m_ui->ignorePCHCheckBox->isChecked() != - (m_settings->pchUsage() == CppCodeModelSettings::PchUse_None)) { - m_settings->setPCHUsage( - m_ui->ignorePCHCheckBox->isChecked() ? CppCodeModelSettings::PchUse_None - : CppCodeModelSettings::PchUse_BuildSystem); - changed = true; - } + changed |= applyClangCodeModelWidgetsToSettings(); + changed |= applyPchCheckBoxToSettings(); if (changed) m_settings->toSettings(Core::ICore::settings()); @@ -101,6 +93,12 @@ void CppCodeModelSettingsWidget::setupClangCodeModelWidgets() const m_ui->clangOptionsToAppendTextEdit->document()->setPlainText(extraClangOptions); } +void CppCodeModelSettingsWidget::setupPchCheckBox() const +{ + const bool ignorePch = m_settings->pchUsage() == CppCodeModelSettings::PchUse_None; + m_ui->ignorePCHCheckBox->setChecked(ignorePch); +} + bool CppCodeModelSettingsWidget::applyClangCodeModelWidgetsToSettings() const { bool settingsChanged = false; @@ -124,6 +122,23 @@ bool CppCodeModelSettingsWidget::applyClangCodeModelWidgetsToSettings() const return settingsChanged; } +bool CppCodeModelSettingsWidget::applyPchCheckBoxToSettings() const +{ + const bool newIgnorePch = m_ui->ignorePCHCheckBox->isChecked(); + const bool previousIgnorePch = m_settings->pchUsage() == CppCodeModelSettings::PchUse_None; + + if (newIgnorePch != previousIgnorePch) { + const CppCodeModelSettings::PCHUsage pchUsage = m_ui->ignorePCHCheckBox->isChecked() + ? CppCodeModelSettings::PchUse_None + : CppCodeModelSettings::PchUse_BuildSystem; + m_settings->setPCHUsage(pchUsage); + + return true; + } + + return false; +} + CppCodeModelSettingsPage::CppCodeModelSettingsPage(QSharedPointer &settings, QObject *parent) : Core::IOptionsPage(parent) diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.h b/src/plugins/cpptools/cppcodemodelsettingspage.h index 1e40a8c6faa..dc14f2fc770 100644 --- a/src/plugins/cpptools/cppcodemodelsettingspage.h +++ b/src/plugins/cpptools/cppcodemodelsettingspage.h @@ -59,7 +59,10 @@ public: private: void setupClangCodeModelWidgets() const; + void setupPchCheckBox() const; + bool applyClangCodeModelWidgetsToSettings() const; + bool applyPchCheckBoxToSettings() const; private: Ui::CppCodeModelSettingsPage *m_ui;