Set correct foreground default in wxControl::DoMSWControlColor().
Instead of hard-coding GetSysColor(COLOR_WINDOWTEXT), use GetForegroundColour() which will call GetDefaultAttributes() to retrieve the default foreground appropriate for this control. This also allows to make the code simpler by calling SetTextColor() only once. See #1691. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -375,10 +375,6 @@ bool wxControl::MSWOnNotify(int idCtrl,
|
||||
WXHBRUSH wxControl::DoMSWControlColor(WXHDC pDC, wxColour colBg, WXHWND hWnd)
|
||||
{
|
||||
HDC hdc = (HDC)pDC;
|
||||
if ( m_hasFgCol )
|
||||
{
|
||||
::SetTextColor(hdc, wxColourToRGB(GetForegroundColour()));
|
||||
}
|
||||
|
||||
WXHBRUSH hbr = 0;
|
||||
if ( !colBg.Ok() )
|
||||
@@ -402,12 +398,14 @@ WXHBRUSH wxControl::DoMSWControlColor(WXHDC pDC, wxColour colBg, WXHWND hWnd)
|
||||
hbr = (WXHBRUSH)brush->GetResourceHandle();
|
||||
}
|
||||
|
||||
// if we use custom background, we should set foreground ourselves too
|
||||
if ( hbr && !m_hasFgCol )
|
||||
// always set the foreground colour if we changed the background, whether
|
||||
// m_hasFgCol is true or not: if it true, we must do it, of course, but
|
||||
// even if it isn't, we must set the default foreground explicitly as by
|
||||
// default just the simple black is used
|
||||
if ( hbr )
|
||||
{
|
||||
::SetTextColor(hdc, ::GetSysColor(COLOR_WINDOWTEXT));
|
||||
::SetTextColor(hdc, wxColourToRGB(GetForegroundColour()));
|
||||
}
|
||||
//else: already set above
|
||||
|
||||
return hbr;
|
||||
}
|
||||
|
Reference in New Issue
Block a user