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
This commit is contained in:
@@ -161,29 +161,36 @@ wxComboCtrl::~wxComboCtrl()
|
|||||||
|
|
||||||
void wxComboCtrl::OnThemeChange()
|
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 )
|
if ( theme )
|
||||||
{
|
{
|
||||||
|
// NB: use EDIT, not COMBOBOX (the latter works in XP but not Vista)
|
||||||
wxUxThemeHandle hTheme(this, L"EDIT");
|
wxUxThemeHandle hTheme(this, L"EDIT");
|
||||||
|
|
||||||
COLORREF col;
|
COLORREF col;
|
||||||
HRESULT hr = theme->GetThemeColor(hTheme,EP_EDITTEXT,ETS_NORMAL,TMT_FILLCOLOR,&col);
|
HRESULT hr = theme->GetThemeColor
|
||||||
if ( FAILED(hr) )
|
(
|
||||||
wxLogApiError(_T("GetThemeColor(EDIT, EP_EDITTEXT, ETS_NORMAL, TMT_FILLCOLOR)"), hr);
|
hTheme,
|
||||||
else
|
EP_EDITTEXT,
|
||||||
|
ETS_NORMAL,
|
||||||
|
TMT_FILLCOLOR,
|
||||||
|
&col
|
||||||
|
);
|
||||||
|
if ( SUCCEEDED(hr) )
|
||||||
|
{
|
||||||
SetBackgroundColour(wxRGBToColour(col));
|
SetBackgroundColour(wxRGBToColour(col));
|
||||||
|
|
||||||
hr = theme->GetThemeColor(hTheme,EP_EDITTEXT,ETS_NORMAL,TMT_TEXTCOLOR,&col);
|
// skip the call below
|
||||||
if ( FAILED(hr) )
|
return;
|
||||||
wxLogApiError(_T("GetThemeColor(EDIT, EP_EDITTEXT, ETS_NORMAL, TMT_TEXTCOLOR)"), hr);
|
}
|
||||||
else
|
|
||||||
SetForegroundColour(wxRGBToColour(col));
|
wxLogApiError(_T("GetThemeColor(EDIT, ETS_NORMAL, TMT_FILLCOLOR)"), hr);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
|
||||||
SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboCtrl::OnResize()
|
void wxComboCtrl::OnResize()
|
||||||
|
Reference in New Issue
Block a user