From 2a1b187b500f3e05de61c476941bdb1544c0d9ba Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 12 May 2007 03:18:46 +0000 Subject: [PATCH] getting text colour using the themes API doesn't seem to work, revert to using the global system colours for it [backport from HEAD] git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/combo.cpp | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/msw/combo.cpp b/src/msw/combo.cpp index 954e54e95b..36721833bb 100644 --- a/src/msw/combo.cpp +++ b/src/msw/combo.cpp @@ -161,29 +161,36 @@ wxComboCtrl::~wxComboCtrl() void wxComboCtrl::OnThemeChange() { - wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive(); + // there doesn't seem to be any way to get the text colour using themes + // API: TMT_TEXTCOLOR doesn't work neither for EDIT nor COMBOBOX + SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); + + wxUxThemeEngine * const theme = wxUxThemeEngine::GetIfActive(); if ( theme ) { + // NB: use EDIT, not COMBOBOX (the latter works in XP but not Vista) wxUxThemeHandle hTheme(this, L"EDIT"); - COLORREF col; - HRESULT hr = theme->GetThemeColor(hTheme,EP_EDITTEXT,ETS_NORMAL,TMT_FILLCOLOR,&col); - if ( FAILED(hr) ) - wxLogApiError(_T("GetThemeColor(EDIT, EP_EDITTEXT, ETS_NORMAL, TMT_FILLCOLOR)"), hr); - else + HRESULT hr = theme->GetThemeColor + ( + hTheme, + EP_EDITTEXT, + ETS_NORMAL, + TMT_FILLCOLOR, + &col + ); + if ( SUCCEEDED(hr) ) + { SetBackgroundColour(wxRGBToColour(col)); - hr = theme->GetThemeColor(hTheme,EP_EDITTEXT,ETS_NORMAL,TMT_TEXTCOLOR,&col); - if ( FAILED(hr) ) - wxLogApiError(_T("GetThemeColor(EDIT, EP_EDITTEXT, ETS_NORMAL, TMT_TEXTCOLOR)"), hr); - else - SetForegroundColour(wxRGBToColour(col)); - } - else - { - SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); - SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); + // skip the call below + return; + } + + wxLogApiError(_T("GetThemeColor(EDIT, ETS_NORMAL, TMT_FILLCOLOR)"), hr); } + + SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); } void wxComboCtrl::OnResize()