]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/notebook.cpp
refactored code to do brush adjustment for bg drawing in only one place
[wxWidgets.git] / src / msw / notebook.cpp
index 13c06febc05a6001d1d52f6249ae358add205b18..3741960c93090267e12eb41e8b5f219514ca04f4 100644 (file)
@@ -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
     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);
 
         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)"));
         }
         {
             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);
         RECT rectClient;
         ::GetClientRect(GetHwndOf(win), &rectClient);
-        ::FillRect(hdc, &rectClient, (HBRUSH)m_hbrBackground);
+        ::FillRect(hdc, &rectClient, (HBRUSH)hbr);
     }
 }
 
     }
 }