fixed background appearance for the controls with changed foreground colour
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31069 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -120,18 +120,12 @@ protected:
|
|||||||
virtual WXHBRUSH MSWControlColor(WXHDC pDC);
|
virtual WXHBRUSH MSWControlColor(WXHDC pDC);
|
||||||
|
|
||||||
// call this from the derived class MSWControlColor() if you want to show
|
// call this from the derived class MSWControlColor() if you want to show
|
||||||
// the control greyed out
|
// the control greyed out (and opaque)
|
||||||
WXHBRUSH MSWControlColorDisabled(WXHDC pDC);
|
WXHBRUSH MSWControlColorDisabled(WXHDC pDC);
|
||||||
|
|
||||||
// call this from the derived class MSWControlColor() if you want to always
|
// call this from the derived class MSWControlColor() if you want to always
|
||||||
// paint the background (as all opaque controls do)
|
// paint the background (as all opaque controls do)
|
||||||
WXHBRUSH MSWControlColorSolid(WXHDC pDC)
|
WXHBRUSH MSWControlColorSolid(WXHDC pDC, wxColour colBg = wxNullColour);
|
||||||
{
|
|
||||||
return MSWControlColorSolid(pDC, GetBackgroundColour());
|
|
||||||
}
|
|
||||||
|
|
||||||
// common part of the 3 methods above
|
|
||||||
WXHBRUSH MSWControlColorSolid(WXHDC pDC, wxColour colBg);
|
|
||||||
|
|
||||||
// another WM_CTLCOLOR-related function: override this to return the brush
|
// another WM_CTLCOLOR-related function: override this to return the brush
|
||||||
// which should be used to paint the control background by default
|
// which should be used to paint the control background by default
|
||||||
|
@@ -337,34 +337,30 @@ WXHBRUSH wxControl::MSWControlColorSolid(WXHDC pDC, wxColour colBg)
|
|||||||
if ( m_hasFgCol )
|
if ( m_hasFgCol )
|
||||||
{
|
{
|
||||||
::SetTextColor(hdc, wxColourToRGB(GetForegroundColour()));
|
::SetTextColor(hdc, wxColourToRGB(GetForegroundColour()));
|
||||||
if ( !colBg.Ok() )
|
|
||||||
colBg = GetBackgroundColour();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// use the background colour override if a valid colour is given
|
||||||
|
WXHBRUSH hbr;
|
||||||
if ( colBg.Ok() )
|
if ( colBg.Ok() )
|
||||||
{
|
{
|
||||||
::SetBkColor(hdc, wxColourToRGB(colBg));
|
// draw children with the same colour as the parent
|
||||||
|
|
||||||
wxBrush *brush = wxTheBrushList->FindOrCreateBrush(colBg, wxSOLID);
|
wxBrush *brush = wxTheBrushList->FindOrCreateBrush(colBg, wxSOLID);
|
||||||
|
|
||||||
return (WXHBRUSH)brush->GetResourceHandle();
|
hbr = (WXHBRUSH)brush->GetResourceHandle();
|
||||||
|
}
|
||||||
|
else // use our own background colour and recurse upwards if necessary
|
||||||
|
{
|
||||||
|
hbr = MSWGetBgBrush(pDC);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return hbr;
|
||||||
}
|
}
|
||||||
|
|
||||||
WXHBRUSH wxControl::MSWControlColor(WXHDC pDC)
|
WXHBRUSH wxControl::MSWControlColor(WXHDC pDC)
|
||||||
{
|
{
|
||||||
WXHBRUSH hbr = MSWControlColorSolid(pDC, m_hasBgCol ? m_backgroundColour
|
|
||||||
: wxNullColour);
|
|
||||||
if ( hbr )
|
|
||||||
return hbr;
|
|
||||||
|
|
||||||
::SetBkMode((HDC)pDC, TRANSPARENT);
|
::SetBkMode((HDC)pDC, TRANSPARENT);
|
||||||
|
|
||||||
hbr = MSWGetBgBrush(pDC);
|
return MSWControlColorSolid(pDC);
|
||||||
|
|
||||||
return hbr ? hbr : MSWGetDefaultBgBrush();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WXHBRUSH wxControl::MSWControlColorDisabled(WXHDC pDC)
|
WXHBRUSH wxControl::MSWControlColorDisabled(WXHDC pDC)
|
||||||
|
Reference in New Issue
Block a user