Editor: Fix crash when setting language id before document

Change-Id: I735484c7036f6c8b26142d114348295d9b12ae97
Reviewed-by: Knud Dollereder <knud.dollereder@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2021-03-17 13:37:15 +01:00
parent 73ff6996b2
commit a52f468bc5

View File

@@ -6020,20 +6020,24 @@ Id TextEditorWidget::languageSettingsId() const
void TextEditorWidget::setCodeStyle(ICodeStylePreferences *preferences) void TextEditorWidget::setCodeStyle(ICodeStylePreferences *preferences)
{ {
textDocument()->indenter()->setCodeStylePreferences(preferences); TextDocument *document = d->m_document.data();
// Not fully initialized yet... wait for TextEditorWidgetPrivate::setupDocumentSignals
if (!document)
return;
document->indenter()->setCodeStylePreferences(preferences);
if (d->m_codeStylePreferences) { if (d->m_codeStylePreferences) {
disconnect(d->m_codeStylePreferences, &ICodeStylePreferences::currentTabSettingsChanged, disconnect(d->m_codeStylePreferences, &ICodeStylePreferences::currentTabSettingsChanged,
d->m_document.data(), &TextDocument::setTabSettings); document, &TextDocument::setTabSettings);
disconnect(d->m_codeStylePreferences, &ICodeStylePreferences::currentValueChanged, disconnect(d->m_codeStylePreferences, &ICodeStylePreferences::currentValueChanged,
this, &TextEditorWidget::slotCodeStyleSettingsChanged); this, &TextEditorWidget::slotCodeStyleSettingsChanged);
} }
d->m_codeStylePreferences = preferences; d->m_codeStylePreferences = preferences;
if (d->m_codeStylePreferences) { if (d->m_codeStylePreferences) {
connect(d->m_codeStylePreferences, &ICodeStylePreferences::currentTabSettingsChanged, connect(d->m_codeStylePreferences, &ICodeStylePreferences::currentTabSettingsChanged,
d->m_document.data(), &TextDocument::setTabSettings); document, &TextDocument::setTabSettings);
connect(d->m_codeStylePreferences, &ICodeStylePreferences::currentValueChanged, connect(d->m_codeStylePreferences, &ICodeStylePreferences::currentValueChanged,
this, &TextEditorWidget::slotCodeStyleSettingsChanged); this, &TextEditorWidget::slotCodeStyleSettingsChanged);
d->m_document->setTabSettings(d->m_codeStylePreferences->currentTabSettings()); document->setTabSettings(d->m_codeStylePreferences->currentTabSettings());
slotCodeStyleSettingsChanged(d->m_codeStylePreferences->currentValue()); slotCodeStyleSettingsChanged(d->m_codeStylePreferences->currentValue());
} }
} }