X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/48fa6bd38ac743f4067e74d4168168ae3a4a068e..5c836c463a8ece980b66ebc9920f1b045d9a8f33:/src/msw/notebook.cpp diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 13c06febc0..3741960c93 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -888,32 +888,40 @@ void wxNotebook::UpdateBgBrush() } } -void wxNotebook::DoEraseBackground(wxEraseEvent& event) +WXHBRUSH wxNotebook::GetThemeBackgroundBrush(WXHDC hDC, wxWindow *win) const { - // we can either draw the background ourselves or let DrawThemeBackground() - // do it, but as we already have the correct brush, let's do it ourselves - // (note that we use the same code in wxControl::MSWControlColor(), so if - // it breaks, it should at least break in consistent way) if ( m_hbrBackground ) { // before drawing with the background brush, we need to position it // correctly - wxWindow *win = (wxWindow *)event.GetEventObject(); - RECT rc; ::GetWindowRect(GetHwndOf(win), &rc); ::MapWindowPoints(NULL, GetHwnd(), (POINT *)&rc, 1); - HDC hdc = GetHdcOf(*event.GetDC()); - if ( !::SetBrushOrgEx(hdc, -rc.left, -rc.top, NULL) ) + if ( !::SetBrushOrgEx((HDC)hDC, -rc.left, -rc.top, NULL) ) { wxLogLastError(_T("SetBrushOrgEx(notebook bg brush)")); } + } + + return m_hbrBackground; +} +void wxNotebook::DoEraseBackground(wxEraseEvent& event) +{ + // we can either draw the background ourselves or let DrawThemeBackground() + // do it, but as we already have the correct brush, let's do it ourselves + // (note that we use the same code in wxControl::MSWControlColor(), so if + // it breaks, it should at least break in consistent way) + wxWindow *win = (wxWindow *)event.GetEventObject(); + HDC hdc = GetHdcOf(*event.GetDC()); + WXHBRUSH hbr = GetThemeBackgroundBrush((WXHDC)hdc, win); + if ( hbr ) + { RECT rectClient; ::GetClientRect(GetHwndOf(win), &rectClient); - ::FillRect(hdc, &rectClient, (HBRUSH)m_hbrBackground); + ::FillRect(hdc, &rectClient, (HBRUSH)hbr); } }