diff options
author | PeterN <peter@fuzzle.org> | 2019-02-24 16:27:44 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-24 16:27:44 +0000 |
commit | 195fd0dc60cc895539ac6c04ff83b6f99f739830 (patch) | |
tree | f5cbcd397645ae1f1a8075bbc9bd5a85ded86bb0 /src | |
parent | 91eee793e1632c124c22ee46911e7de5fb3a2362 (diff) | |
download | openttd-195fd0dc60cc895539ac6c04ff83b6f99f739830.tar.xz |
Fix #7266: Reorder reinitialization of caches when changing font zoom level. (#7273)
Diffstat (limited to 'src')
-rw-r--r-- | src/fontcache.cpp | 6 | ||||
-rw-r--r-- | src/gfx.cpp | 3 | ||||
-rw-r--r-- | src/settings_gui.cpp | 5 |
3 files changed, 7 insertions, 7 deletions
diff --git a/src/fontcache.cpp b/src/fontcache.cpp index 604cc7374..2811f1798 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -421,6 +421,9 @@ FreeTypeFontCache::~FreeTypeFontCache() */ void FreeTypeFontCache::ClearFontCache() { + /* Font scaling might have changed, determine font size anew if it was automatically selected. */ + if (this->face != NULL) this->SetFontSize(this->fs, this->face, this->req_size); + if (this->glyph_to_sprite == NULL) return; for (int i = 0; i < 256; i++) { @@ -438,9 +441,6 @@ void FreeTypeFontCache::ClearFontCache() this->glyph_to_sprite = NULL; Layouter::ResetFontCache(this->fs); - - /* GUI scaling might have changed, determine font size anew if it was automatically selected. */ - if (this->face != NULL) this->SetFontSize(this->fs, this->face, this->req_size); } FreeTypeFontCache::GlyphEntry *FreeTypeFontCache::GetGlyphPtr(GlyphID key) diff --git a/src/gfx.cpp b/src/gfx.cpp index 0f050971c..7a6b827b7 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -1131,13 +1131,14 @@ TextColour GetContrastColour(uint8 background, uint8 threshold) */ void LoadStringWidthTable(bool monospace) { + ClearFontCache(); + for (FontSize fs = monospace ? FS_MONO : FS_BEGIN; fs < (monospace ? FS_END : FS_MONO); fs++) { for (uint i = 0; i != 224; i++) { _stringwidth_table[fs][i] = GetGlyphWidth(fs, i + 32); } } - ClearFontCache(); ReInitAllWindows(); } diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index a15f2ff58..a31c3afa4 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -556,16 +556,15 @@ struct GameOptionsWindow : Window { GfxClearSpriteCache(); _gui_zoom = (ZoomLevel)(ZOOM_LVL_OUT_4X - index); UpdateCursorSize(); - LoadStringWidthTable(); UpdateAllVirtCoords(); + ReInitAllWindows(); break; case WID_GO_FONT_ZOOM_DROPDOWN: - GfxClearSpriteCache(); _font_zoom = (ZoomLevel)(ZOOM_LVL_OUT_4X - index); ClearFontCache(); + LoadStringWidthTable(); UpdateAllVirtCoords(); - ReInitAllWindows(); break; case WID_GO_BASE_GRF_DROPDOWN: |