Have wxComboCtrl honour any custom foreground and background colour.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -913,7 +913,12 @@ void wxComboCtrlBase::OnThemeChange()
|
||||
// be the correct colour and themed brush. Instead we'll use
|
||||
// wxSYS_COLOUR_WINDOW in the EVT_PAINT handler as needed.
|
||||
#ifndef __WXMAC__
|
||||
SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
||||
if ( !m_hasBgCol )
|
||||
{
|
||||
wxColour bgCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
|
||||
SetOwnBackgroundColour(bgCol);
|
||||
m_hasBgCol = false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1353,20 +1358,46 @@ void wxComboCtrlBase::PrepareBackground( wxDC& dc, const wxRect& rect, int flags
|
||||
selRect.width -= wcp + (focusSpacingX*2);
|
||||
|
||||
wxColour bgCol;
|
||||
wxColour fgCol;
|
||||
|
||||
bool doDrawSelRect = true;
|
||||
|
||||
// Determine foreground colour
|
||||
if ( isEnabled )
|
||||
{
|
||||
// If popup is hidden and this control is focused,
|
||||
// then draw the focus-indicator (selbgcolor background etc.).
|
||||
if ( doDrawFocusRect )
|
||||
{
|
||||
dc.SetTextForeground( wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT) );
|
||||
bgCol = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
|
||||
fgCol = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
|
||||
}
|
||||
else if ( m_hasFgCol )
|
||||
{
|
||||
// Honour the custom foreground colour
|
||||
fgCol = GetForegroundColour();
|
||||
}
|
||||
else
|
||||
{
|
||||
fgCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fgCol = wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT);
|
||||
}
|
||||
|
||||
// Determine background colour
|
||||
if ( isEnabled )
|
||||
{
|
||||
if ( doDrawFocusRect )
|
||||
{
|
||||
bgCol = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
|
||||
}
|
||||
else if ( m_hasBgCol )
|
||||
{
|
||||
// Honour the custom background colour
|
||||
bgCol = GetBackgroundColour();
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetTextForeground( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT) );
|
||||
#ifndef __WXMAC__ // see note in OnThemeChange
|
||||
doDrawSelRect = false;
|
||||
bgCol = GetBackgroundColour();
|
||||
@@ -1377,7 +1408,6 @@ void wxComboCtrlBase::PrepareBackground( wxDC& dc, const wxRect& rect, int flags
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetTextForeground( wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT) );
|
||||
#ifndef __WXMAC__ // see note in OnThemeChange
|
||||
bgCol = GetBackgroundColour();
|
||||
#else
|
||||
@@ -1385,6 +1415,7 @@ void wxComboCtrlBase::PrepareBackground( wxDC& dc, const wxRect& rect, int flags
|
||||
#endif
|
||||
}
|
||||
|
||||
dc.SetTextForeground( fgCol );
|
||||
dc.SetBrush( bgCol );
|
||||
if ( doDrawSelRect )
|
||||
{
|
||||
|
Reference in New Issue
Block a user