Fix garbled text when display scalling > 300% (#3402)

* Fix garbled text when display scalling > 300%

On Windows, if your display scaling is greater than 300%,
the text rendered by imgui will be garbled. Allowing imgui
to do the scaling instead of making the font to large
corrects the issue.

* Only use modified scaling on Windows

And only if the system's scaling factor is greater than 300%.

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
Leland Lucius 2024-01-15 07:01:43 -06:00 committed by GitHub
parent a996188e38
commit 1cdd31fa99
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 1 deletions

View file

@ -6422,7 +6422,17 @@ void GLCanvas3D::_resize(unsigned int w, unsigned int h)
m_last_w = w;
m_last_h = h;
const float font_size = 1.5f * wxGetApp().em_unit();
float font_size = wxGetApp().em_unit();
#ifdef _WIN32
// On Windows, if manually scaled here, rendering issues can occur when the system's Display
// scaling is greater than 300% as the font's size gets to be to large. So, use imgui font
// scaling instead (see: ImGuiWrapper::init_font() and issue #3401)
font_size *= (font_size > 30.0f) ? 1.0f : 1.5f;
#else
font_size *= 1.5f;
#endif
#if ENABLE_RETINA_GL
imgui->set_scaling(font_size, 1.0f, m_retina_helper->get_scale_factor());
#else