From: Vadim Zeitlin Date: Wed, 22 Dec 2004 21:07:33 +0000 (+0000) Subject: fixed background drawing for opaque controls X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/dd12ce22d806e6a9c40cf7bdfddbb237cd55b0ca fixed background drawing for opaque controls git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31119 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/msw/control.h b/include/wx/msw/control.h index 74000ed3e2..70ce2da88d 100644 --- a/include/wx/msw/control.h +++ b/include/wx/msw/control.h @@ -125,7 +125,15 @@ protected: // call this from the derived class MSWControlColor() if you want to always // paint the background (as all opaque controls do) - WXHBRUSH MSWControlColorSolid(WXHDC pDC, wxColour colBg = wxNullColour); + WXHBRUSH MSWControlColorSolid(WXHDC pDC) + { + return DoMSWControlColor(pDC, GetBackgroundColour()); + } + + // common part of the 3 functions above: pass wxNullColour to use the + // appropriate background colour (meaning ours or our parents) or a fixed + // one + WXHBRUSH DoMSWControlColor(WXHDC pDC, wxColour colBg); // another WM_CTLCOLOR-related function: override this to return the brush // which should be used to paint the control background by default diff --git a/src/msw/control.cpp b/src/msw/control.cpp index 1561c9d470..d5775be8b7 100644 --- a/src/msw/control.cpp +++ b/src/msw/control.cpp @@ -331,7 +331,7 @@ bool wxControl::MSWOnNotify(int idCtrl, } #endif // Win95 -WXHBRUSH wxControl::MSWControlColorSolid(WXHDC pDC, wxColour colBg) +WXHBRUSH wxControl::DoMSWControlColor(WXHDC pDC, wxColour colBg) { HDC hdc = (HDC)pDC; if ( m_hasFgCol ) @@ -358,18 +358,18 @@ WXHBRUSH wxControl::MSWControlColorSolid(WXHDC pDC, wxColour colBg) WXHBRUSH wxControl::MSWControlColor(WXHDC pDC) { + // by default consider that the controls text shouldn't erase the + // background under it (this is true for all static controls, check boxes, + // radio buttons, ... ::SetBkMode((HDC)pDC, TRANSPARENT); - return MSWControlColorSolid(pDC); + return DoMSWControlColor(pDC, wxNullColour); } WXHBRUSH wxControl::MSWControlColorDisabled(WXHDC pDC) { - return MSWControlColorSolid - ( - pDC, - wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE) - ); + return DoMSWControlColor(pDC, + wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)); } // ---------------------------------------------------------------------------