Fix wxUxThemeEngine on WinXP after DrawItemText() addition
The recent addition of DrawThemeTextEx in
b7a89f8746
(Add wxRendererNative::DrawItemText()
for list-like controls) broke initialization of uxtheme on WinXP as
DrawThemeEx is only available on Vista+.
Closes https://github.com/wxWidgets/wxWidgets/pull/101/
This commit is contained in:
committed by
Vadim Zeitlin
parent
2eccc1a57d
commit
42338fb5fd
@@ -983,7 +983,8 @@ void wxRendererXP::DrawItemText(wxWindow* win,
|
||||
itemState |= LISS_DISABLED;
|
||||
|
||||
wxUxThemeEngine* te = wxUxThemeEngine::Get();
|
||||
if ( te->IsThemePartDefined(hTheme, LVP_LISTITEM, itemState) )
|
||||
if ( te->DrawThemeTextEx && // Might be not available if we're under XP
|
||||
te->IsThemePartDefined(hTheme, LVP_LISTITEM, itemState) )
|
||||
{
|
||||
RECT rc;
|
||||
wxCopyRectToRECT(rect, rc);
|
||||
|
@@ -115,8 +115,11 @@ bool wxUxThemeEngine::Initialize()
|
||||
if ( !m_dllUxTheme.Load(wxT("uxtheme.dll")) )
|
||||
return false;
|
||||
|
||||
#define RESOLVE_OPTIONAL_UXTHEME_FUNCTION(type, funcname) \
|
||||
funcname = (type)m_dllUxTheme.GetSymbol(wxT(#funcname))
|
||||
|
||||
#define RESOLVE_UXTHEME_FUNCTION(type, funcname) \
|
||||
funcname = (type)m_dllUxTheme.GetSymbol(wxT(#funcname)); \
|
||||
RESOLVE_OPTIONAL_UXTHEME_FUNCTION(type, funcname); \
|
||||
if ( !funcname ) \
|
||||
return false
|
||||
|
||||
@@ -124,7 +127,9 @@ bool wxUxThemeEngine::Initialize()
|
||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUCLOSETHEMEDATA, CloseThemeData);
|
||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUDRAWTHEMEBACKGROUND, DrawThemeBackground);
|
||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUDRAWTHEMETEXT, DrawThemeText);
|
||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUDRAWTHEMETEXTEX, DrawThemeTextEx);
|
||||
// This function is not available under XP, so don't fail if it can't be
|
||||
// resolved, we'll check before using it.
|
||||
RESOLVE_OPTIONAL_UXTHEME_FUNCTION(PFNWXUDRAWTHEMETEXTEX, DrawThemeTextEx);
|
||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUGETTHEMEBACKGROUNDCONTENTRECT, GetThemeBackgroundContentRect);
|
||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUGETTHEMEBACKGROUNDEXTENT, GetThemeBackgroundExtent);
|
||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUGETTHEMEPARTSIZE, GetThemePartSize);
|
||||
|
Reference in New Issue
Block a user