Change DPI awareness only for ChooseFont() duration

Extract ChooseFont() in a small helper function to ensure that the DPI
awareness is restored as soon as it returns.

No real changes yet.
This commit is contained in:
Vadim Zeitlin
2022-04-17 16:53:42 +01:00
parent caac3a4f19
commit f68993111c

View File

@@ -88,6 +88,14 @@ wxString wxFontDialog::GetTitle() const
return m_title;
}
// Tiny wrapper calling ::ChooseFont() with system DPI awareness, as the
// standard dialog doesn't work correctly when using per-monitor awareness.
static BOOL wxMSWChooseFont(CHOOSEFONT* pCF)
{
wxMSWImpl::AutoSystemDpiAware dpiAwareness;
return ::ChooseFont(pCF);
}
int wxFontDialog::ShowModal()
{
WX_HOOK_MODAL_DIALOG();
@@ -153,9 +161,7 @@ int wxFontDialog::ShowModal()
chooseFontStruct.Flags = flags;
wxMSWImpl::AutoSystemDpiAware dpiAwareness;
if ( ChooseFont(&chooseFontStruct) != 0 )
if ( wxMSWChooseFont(&chooseFontStruct) != 0 )
{
wxRGBToColour(m_fontData.m_fontColour, chooseFontStruct.rgbColors);
m_fontData.m_chosenFont = wxFont(wxNativeFontInfo(logFont, this));