Editor: Fix crash on exit

Make sure no FontSettingsPageWidget is created when changing the font
zoom level in the editor. Otherwise it will crash in the font combo box
when closing Qt Creator.

Since we can't use the save and emit mechanism from the widget anymore
move it to TextEditorSettings

Change-Id: I1eb87bbae3cf2b802fb15981e7fc2203106d5565
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2020-02-27 14:43:35 +01:00
parent 2ce03eae18
commit 3c4acafdb6
2 changed files with 13 additions and 9 deletions

View File

@@ -642,9 +642,8 @@ FontSettingsPage::FontSettingsPage(FontSettings *fontSettings, const FormatDescr
void FontSettingsPage::setFontZoom(int zoom) void FontSettingsPage::setFontZoom(int zoom)
{ {
auto w = static_cast<FontSettingsPageWidget *>(widget()); if (m_widget)
w->m_ui.zoomSpinBox->setValue(zoom); static_cast<FontSettingsPageWidget *>(m_widget.data())->m_ui.zoomSpinBox->setValue(zoom);
w->saveSettings();
} }
} // TextEditor } // TextEditor

View File

@@ -514,21 +514,26 @@ Core::Id TextEditorSettings::languageId(const QString &mimeType)
return d->m_mimeTypeToLanguage.value(mimeType); return d->m_mimeTypeToLanguage.value(mimeType);
} }
static void setFontZoom(int zoom)
{
d->m_fontSettingsPage.setFontZoom(zoom);
d->m_fontSettings.setFontZoom(zoom);
d->m_fontSettings.toSettings(Core::ICore::settings());
emit m_instance->fontSettingsChanged(d->m_fontSettings);
}
int TextEditorSettings::increaseFontZoom(int step) int TextEditorSettings::increaseFontZoom(int step)
{ {
const int previousZoom = d->m_fontSettings.fontZoom(); const int previousZoom = d->m_fontSettings.fontZoom();
const int newZoom = qMax(10, previousZoom + step); const int newZoom = qMax(10, previousZoom + step);
if (newZoom != previousZoom) { if (newZoom != previousZoom)
d->m_fontSettings.setFontZoom(newZoom); setFontZoom(newZoom);
d->m_fontSettingsPage.setFontZoom(newZoom);
}
return newZoom; return newZoom;
} }
void TextEditorSettings::resetFontZoom() void TextEditorSettings::resetFontZoom()
{ {
d->m_fontSettings.setFontZoom(100); setFontZoom(100);
d->m_fontSettingsPage.setFontZoom(100);
} }
} // TextEditor } // TextEditor