Fix a crash on codestylesettings

Task-number: QTCREATORBUG-10235

Instead of rely on ICodeStylePreferences::destroyed() signal,
when all other objects might be in destruction phase,
clear project code style settings explicitly, when project
closes.

Change-Id: I0dd6675d54c5495d4006acbc9ad12c95f1d0a00c
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
This commit is contained in:
jkobus
2013-09-27 12:46:08 +02:00
committed by Jarek Kobus
parent 1f0cbbc807
commit 2cbb64e0f9
4 changed files with 45 additions and 19 deletions

View File

@@ -4537,8 +4537,6 @@ void BaseTextEditorWidget::setCodeStyle(ICodeStylePreferences *preferences)
this, SLOT(setTabSettings(TextEditor::TabSettings)));
disconnect(d->m_codeStylePreferences, SIGNAL(currentValueChanged(QVariant)),
this, SLOT(slotCodeStyleSettingsChanged(QVariant)));
disconnect(d->m_codeStylePreferences, SIGNAL(destroyed()),
this, SLOT(onCodeStylePreferencesDestroyed()));
}
d->m_codeStylePreferences = preferences;
if (d->m_codeStylePreferences) {
@@ -4546,25 +4544,11 @@ void BaseTextEditorWidget::setCodeStyle(ICodeStylePreferences *preferences)
this, SLOT(setTabSettings(TextEditor::TabSettings)));
connect(d->m_codeStylePreferences, SIGNAL(currentValueChanged(QVariant)),
this, SLOT(slotCodeStyleSettingsChanged(QVariant)));
connect(d->m_codeStylePreferences, SIGNAL(destroyed()),
this, SLOT(onCodeStylePreferencesDestroyed()));
setTabSettings(d->m_codeStylePreferences->currentTabSettings());
slotCodeStyleSettingsChanged(d->m_codeStylePreferences->currentValue());
}
}
void BaseTextEditorWidget::onCodeStylePreferencesDestroyed()
{
if (sender() != d->m_codeStylePreferences)
return;
ICodeStylePreferences *prefs = TextEditorSettings::codeStyle(languageSettingsId());
if (prefs == d->m_codeStylePreferences)
prefs = 0;
// avoid failing disconnects, m_codeStylePreferences has already been reduced to QObject
d->m_codeStylePreferences = 0;
setCodeStyle(prefs);
}
void BaseTextEditorWidget::slotCodeStyleSettingsChanged(const QVariant &)
{