Miscellaneous DPI Improvements.

See https://github.com/wxWidgets/wxWidgets/pull/2025
This commit is contained in:
Vadim Zeitlin
2020-08-21 02:44:07 +02:00
3 changed files with 12 additions and 23 deletions

View File

@@ -22,13 +22,14 @@ namespace wxMSWImpl
{ {
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Temporarily change the DPI Awareness context to System // Temporarily change the DPI Awareness context to GDIScaled or System
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class AutoSystemDpiAware class AutoSystemDpiAware
{ {
#define WXDPI_AWARENESS_CONTEXT_UNAWARE ((WXDPI_AWARENESS_CONTEXT)-1) #define WXDPI_AWARENESS_CONTEXT_UNAWARE ((WXDPI_AWARENESS_CONTEXT)-1)
#define WXDPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((WXDPI_AWARENESS_CONTEXT)-2) #define WXDPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((WXDPI_AWARENESS_CONTEXT)-2)
#define WXDPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((WXDPI_AWARENESS_CONTEXT)-5)
typedef WXDPI_AWARENESS_CONTEXT typedef WXDPI_AWARENESS_CONTEXT
(WINAPI *SetThreadDpiAwarenessContext_t)(WXDPI_AWARENESS_CONTEXT); (WINAPI *SetThreadDpiAwarenessContext_t)(WXDPI_AWARENESS_CONTEXT);
@@ -46,7 +47,12 @@ public:
if ( m_pfnSetThreadDpiAwarenessContext ) if ( m_pfnSetThreadDpiAwarenessContext )
{ {
m_prevContext = m_pfnSetThreadDpiAwarenessContext( m_prevContext = m_pfnSetThreadDpiAwarenessContext(
WXDPI_AWARENESS_CONTEXT_SYSTEM_AWARE); WXDPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED);
if ( !m_prevContext )
{
m_prevContext = m_pfnSetThreadDpiAwarenessContext(
WXDPI_AWARENESS_CONTEXT_SYSTEM_AWARE);
}
} }
} }

View File

@@ -262,7 +262,7 @@ public:
virtual wxSize GetSize() const wxOVERRIDE virtual wxSize GetSize() const wxOVERRIDE
{ {
return wxSize(60,20); return GetView()->FromDIP(wxSize(60, 20));
} }
virtual bool SetValue( const wxVariant &value ) wxOVERRIDE virtual bool SetValue( const wxVariant &value ) wxOVERRIDE

View File

@@ -429,17 +429,6 @@ void wxListCtrl::MSWUpdateFontOnDPIChange(const wxSize& newDPI)
{ {
wxListCtrlBase::MSWUpdateFontOnDPIChange(newDPI); wxListCtrlBase::MSWUpdateFontOnDPIChange(newDPI);
for ( int i = 0; i < GetItemCount(); i++ )
{
wxMSWListItemData *data = MSWGetItemData(i);
if ( data && data->attr && data->attr->HasFont() )
{
wxFont f = data->attr->GetFont();
f.WXAdjustToPPI(newDPI);
SetItemFont(i, f);
}
}
if ( m_headerCustomDraw && m_headerCustomDraw->m_attr.HasFont() ) if ( m_headerCustomDraw && m_headerCustomDraw->m_attr.HasFont() )
{ {
wxItemAttr item(m_headerCustomDraw->m_attr); wxItemAttr item(m_headerCustomDraw->m_attr);
@@ -1014,13 +1003,6 @@ bool wxListCtrl::SetItem(wxListItem& info)
data->attr->AssignFrom(attrNew); data->attr->AssignFrom(attrNew);
else else
data->attr = new wxItemAttr(attrNew); data->attr = new wxItemAttr(attrNew);
if ( data->attr->HasFont() )
{
wxFont f = data->attr->GetFont();
f.WXAdjustToPPI(GetDPI());
data->attr->SetFont(f);
}
} }
} }
@@ -3182,6 +3164,7 @@ static WXLPARAM HandleItemPrepaint(wxListCtrl *listctrl,
if ( attr->HasFont() ) if ( attr->HasFont() )
{ {
wxFont font = attr->GetFont(); wxFont font = attr->GetFont();
font.WXAdjustToPPI(listctrl->GetDPI());
if ( font.GetEncoding() != wxFONTENCODING_SYSTEM ) if ( font.GetEncoding() != wxFONTENCODING_SYSTEM )
{ {
// the standard control ignores the font encoding/charset, at least // the standard control ignores the font encoding/charset, at least