]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/tbar95.cpp
make access specifiers for the virtual functions match their access in the base class...
[wxWidgets.git] / src / msw / tbar95.cpp
index a65d6202db6aa05bd7413268d73447b798634d75..9015f5cf7388f5d21bf78865baa59844b3f47af7 100644 (file)
@@ -234,10 +234,6 @@ bool wxToolBar::Create(wxWindow *parent,
 
     wxSetCCUnicodeFormat(GetHwnd());
 
-    // set up the colors and fonts
-    SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
-    SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
-
     // workaround for flat toolbar on Windows XP classic style: we have to set
     // the style after creating the control; doing it at creation time doesn't work
 #if wxUSE_UXTHEME
@@ -1344,27 +1340,48 @@ void wxToolBar::OnMouseEvent(wxMouseEvent& event)
 // colour: for example, when it must blend in with a notebook page.
 void wxToolBar::OnEraseBackground(wxEraseEvent& event)
 {
-    if ( !UseBgCol() )
-    {
-        event.Skip();
-        return;
-    }
-
-    wxColour bgCol = GetBackgroundColour();
-
-    // notice that this 'dumb' implementation may cause flicker for some of the
-    // controls in which case they should intercept wxEraseEvent and process it
-    // themselves somehow
-
     RECT rect = wxGetClientRect(GetHwnd());
-
-    AutoHBRUSH hBrush(wxColourToRGB(bgCol));
-
     HDC hdc = GetHdcOf((*event.GetDC()));
 
-    wxCHANGE_HDC_MAP_MODE(hdc, MM_TEXT);
+    if ( UseBgCol() )
+    {
+        // do draw our background
+        //
+        // notice that this 'dumb' implementation may cause flicker for some of
+        // the controls in which case they should intercept wxEraseEvent and
+        // process it themselves somehow
+        AutoHBRUSH hBrush(wxColourToRGB(GetBackgroundColour()));
+
+        wxCHANGE_HDC_MAP_MODE(hdc, MM_TEXT);
+        ::FillRect(hdc, &rect, hBrush);
+    }
+    else // we have no non default background colour
+    {
+#if wxUSE_UXTHEME
+        // we may need to draw themed colour so that we appear correctly on
+        // e.g. notebook page under XP with themes but only do it if the parent
+        // draws themed background itself
+        if ( !GetParent()->UseBgCol() )
+        {
+            wxUxThemeEngine *theme = wxUxThemeEngine::GetIfActive();
+            if ( theme )
+            {
+                HRESULT
+                    hr = theme->DrawThemeParentBackground(GetHwnd(), hdc, &rect);
+                if ( hr == S_OK )
+                    return;
+
+                // it can also return S_FALSE which seems to simply say that it
+                // didn't draw anything but no error really occurred
+                if ( FAILED(hr) )
+                    wxLogApiError(_T("DrawThemeParentBackground(toolbar)"), hr);
+            }
+        }
+#endif // wxUSE_UXTHEME
 
-    ::FillRect(hdc, &rect, hBrush);
+        event.Skip();
+        return;
+    }
 }
 
 bool wxToolBar::HandleSize(WXWPARAM WXUNUSED(wParam), WXLPARAM lParam)