Clang: Avoid storing settings more than needed

There is no need to store on every key stroken when changing the
diagnostic config in the projects mode.

Change-Id: I627c11621b999527c110862365ba5c2a0b1e878b
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-01-22 16:01:09 +01:00
parent 49ba25e183
commit 384128662e
2 changed files with 8 additions and 4 deletions

View File

@@ -76,6 +76,8 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
connect(m_ui.clangSettings, connect(m_ui.clangSettings,
static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
this, &ClangProjectSettingsWidget::onClangSettingsChanged); this, &ClangProjectSettingsWidget::onClangSettingsChanged);
connect(project, &ProjectExplorer::Project::aboutToSaveSettings,
this, &ClangProjectSettingsWidget::onAboutToSaveProjectSettings);
m_ui.diagnosticConfigurationGroupBox->layout()->addWidget(m_diagnosticConfigWidget); m_ui.diagnosticConfigurationGroupBox->layout()->addWidget(m_diagnosticConfigWidget);
} }
@@ -86,7 +88,6 @@ void ClangProjectSettingsWidget::onCurrentWarningConfigChanged(const Core::Id &c
if (m_projectSettings.useGlobalConfig()) if (m_projectSettings.useGlobalConfig())
return; return;
m_projectSettings.setWarningConfigId(currentConfigId); m_projectSettings.setWarningConfigId(currentConfigId);
m_projectSettings.store();
} }
void ClangProjectSettingsWidget::onCustomWarningConfigsChanged( void ClangProjectSettingsWidget::onCustomWarningConfigsChanged(
@@ -97,7 +98,6 @@ void ClangProjectSettingsWidget::onCustomWarningConfigsChanged(
const QSharedPointer<CppTools::CppCodeModelSettings> codeModelSettings const QSharedPointer<CppTools::CppCodeModelSettings> codeModelSettings
= CppTools::codeModelSettings(); = CppTools::codeModelSettings();
codeModelSettings->setClangCustomDiagnosticConfigs(customConfigs); codeModelSettings->setClangCustomDiagnosticConfigs(customConfigs);
codeModelSettings->toSettings(Core::ICore::settings());
connectToCppCodeModelSettingsChanged(); connectToCppCodeModelSettingsChanged();
} }
@@ -115,16 +115,19 @@ void ClangProjectSettingsWidget::onDelayedTemplateParseClicked(bool checked)
options.removeAll(QLatin1String{ClangProjectSettings::NoDelayedTemplateParsing}); options.removeAll(QLatin1String{ClangProjectSettings::NoDelayedTemplateParsing});
options.append(extraFlag); options.append(extraFlag);
m_projectSettings.setCommandLineOptions(options); m_projectSettings.setCommandLineOptions(options);
m_projectSettings.store();
} }
void ClangProjectSettingsWidget::onClangSettingsChanged(int index) void ClangProjectSettingsWidget::onClangSettingsChanged(int index)
{ {
m_projectSettings.setUseGlobalConfig(index == 0 ? true : false); m_projectSettings.setUseGlobalConfig(index == 0 ? true : false);
m_projectSettings.store();
syncOtherWidgetsToComboBox(); syncOtherWidgetsToComboBox();
} }
void ClangProjectSettingsWidget::onAboutToSaveProjectSettings()
{
CppTools::codeModelSettings()->toSettings(Core::ICore::settings());
}
void ClangProjectSettingsWidget::syncOtherWidgetsToComboBox() void ClangProjectSettingsWidget::syncOtherWidgetsToComboBox()
{ {
const QStringList options = m_projectSettings.commandLineOptions(); const QStringList options = m_projectSettings.commandLineOptions();

View File

@@ -51,6 +51,7 @@ private:
void onCustomWarningConfigsChanged(const CppTools::ClangDiagnosticConfigs &customConfigs); void onCustomWarningConfigsChanged(const CppTools::ClangDiagnosticConfigs &customConfigs);
void onDelayedTemplateParseClicked(bool); void onDelayedTemplateParseClicked(bool);
void onClangSettingsChanged(int index); void onClangSettingsChanged(int index);
void onAboutToSaveProjectSettings();
void refreshDiagnosticConfigsWidgetFromSettings(); void refreshDiagnosticConfigsWidgetFromSettings();
void connectToCppCodeModelSettingsChanged(); void connectToCppCodeModelSettingsChanged();
void disconnectFromCppCodeModelSettingsChanged(); void disconnectFromCppCodeModelSettingsChanged();