forked from qt-creator/qt-creator
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:
@@ -642,9 +642,8 @@ FontSettingsPage::FontSettingsPage(FontSettings *fontSettings, const FormatDescr
|
||||
|
||||
void FontSettingsPage::setFontZoom(int zoom)
|
||||
{
|
||||
auto w = static_cast<FontSettingsPageWidget *>(widget());
|
||||
w->m_ui.zoomSpinBox->setValue(zoom);
|
||||
w->saveSettings();
|
||||
if (m_widget)
|
||||
static_cast<FontSettingsPageWidget *>(m_widget.data())->m_ui.zoomSpinBox->setValue(zoom);
|
||||
}
|
||||
|
||||
} // TextEditor
|
||||
|
@@ -514,21 +514,26 @@ Core::Id TextEditorSettings::languageId(const QString &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)
|
||||
{
|
||||
const int previousZoom = d->m_fontSettings.fontZoom();
|
||||
const int newZoom = qMax(10, previousZoom + step);
|
||||
if (newZoom != previousZoom) {
|
||||
d->m_fontSettings.setFontZoom(newZoom);
|
||||
d->m_fontSettingsPage.setFontZoom(newZoom);
|
||||
}
|
||||
if (newZoom != previousZoom)
|
||||
setFontZoom(newZoom);
|
||||
return newZoom;
|
||||
}
|
||||
|
||||
void TextEditorSettings::resetFontZoom()
|
||||
{
|
||||
d->m_fontSettings.setFontZoom(100);
|
||||
d->m_fontSettingsPage.setFontZoom(100);
|
||||
setFontZoom(100);
|
||||
}
|
||||
|
||||
} // TextEditor
|
||||
|
Reference in New Issue
Block a user