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;
|
itemState |= LISS_DISABLED;
|
||||||
|
|
||||||
wxUxThemeEngine* te = wxUxThemeEngine::Get();
|
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;
|
RECT rc;
|
||||||
wxCopyRectToRECT(rect, rc);
|
wxCopyRectToRECT(rect, rc);
|
||||||
|
@@ -115,8 +115,11 @@ bool wxUxThemeEngine::Initialize()
|
|||||||
if ( !m_dllUxTheme.Load(wxT("uxtheme.dll")) )
|
if ( !m_dllUxTheme.Load(wxT("uxtheme.dll")) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
#define RESOLVE_OPTIONAL_UXTHEME_FUNCTION(type, funcname) \
|
||||||
|
funcname = (type)m_dllUxTheme.GetSymbol(wxT(#funcname))
|
||||||
|
|
||||||
#define RESOLVE_UXTHEME_FUNCTION(type, funcname) \
|
#define RESOLVE_UXTHEME_FUNCTION(type, funcname) \
|
||||||
funcname = (type)m_dllUxTheme.GetSymbol(wxT(#funcname)); \
|
RESOLVE_OPTIONAL_UXTHEME_FUNCTION(type, funcname); \
|
||||||
if ( !funcname ) \
|
if ( !funcname ) \
|
||||||
return false
|
return false
|
||||||
|
|
||||||
@@ -124,7 +127,9 @@ bool wxUxThemeEngine::Initialize()
|
|||||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUCLOSETHEMEDATA, CloseThemeData);
|
RESOLVE_UXTHEME_FUNCTION(PFNWXUCLOSETHEMEDATA, CloseThemeData);
|
||||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUDRAWTHEMEBACKGROUND, DrawThemeBackground);
|
RESOLVE_UXTHEME_FUNCTION(PFNWXUDRAWTHEMEBACKGROUND, DrawThemeBackground);
|
||||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUDRAWTHEMETEXT, DrawThemeText);
|
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(PFNWXUGETTHEMEBACKGROUNDCONTENTRECT, GetThemeBackgroundContentRect);
|
||||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUGETTHEMEBACKGROUNDEXTENT, GetThemeBackgroundExtent);
|
RESOLVE_UXTHEME_FUNCTION(PFNWXUGETTHEMEBACKGROUNDEXTENT, GetThemeBackgroundExtent);
|
||||||
RESOLVE_UXTHEME_FUNCTION(PFNWXUGETTHEMEPARTSIZE, GetThemePartSize);
|
RESOLVE_UXTHEME_FUNCTION(PFNWXUGETTHEMEPARTSIZE, GetThemePartSize);
|
||||||
|
Reference in New Issue
Block a user