Fixed parts of toolbar background not being drawn with older comctl32.dll.

When using comctl32.dll versions older than 6.0 toolbar icons would not have their background drawn. Fix this in a rough way by always completely erasing the background like was done before. Regression since r62971.

Closes #13512.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Dimitri Schoolwerth 2012-05-02 14:44:45 +00:00
parent c06efacb1c
commit ae580de376
2 changed files with 13 additions and 1 deletions

View File

@ -67,6 +67,7 @@ public:
void OnMouseEvent(wxMouseEvent& event); void OnMouseEvent(wxMouseEvent& event);
void OnSysColourChanged(wxSysColourChangedEvent& event); void OnSysColourChanged(wxSysColourChangedEvent& event);
void OnEraseBackground(wxEraseEvent& event);
void SetFocus() {} void SetFocus() {}

View File

@ -127,6 +127,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl)
BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase) BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase)
EVT_MOUSE_EVENTS(wxToolBar::OnMouseEvent) EVT_MOUSE_EVENTS(wxToolBar::OnMouseEvent)
EVT_SYS_COLOUR_CHANGED(wxToolBar::OnSysColourChanged) EVT_SYS_COLOUR_CHANGED(wxToolBar::OnSysColourChanged)
EVT_ERASE_BACKGROUND(wxToolBar::OnEraseBackground)
END_EVENT_TABLE() END_EVENT_TABLE()
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -340,7 +341,10 @@ bool wxToolBar::Create(wxWindow *parent,
// in WM_ERASEBKGND too (by default this won't be done but if the toolbar // in WM_ERASEBKGND too (by default this won't be done but if the toolbar
// has a non default background colour, then it would be used in both // has a non default background colour, then it would be used in both
// places resulting in flicker) // places resulting in flicker)
SetBackgroundStyle(wxBG_STYLE_PAINT); if (wxApp::GetComCtl32Version() >= 600)
{
SetBackgroundStyle(wxBG_STYLE_PAINT);
}
return true; return true;
} }
@ -1679,6 +1683,13 @@ void wxToolBar::OnMouseEvent(wxMouseEvent& event)
} }
} }
// This handler is needed to fix problems with painting the background of
// toolbar icons with comctl32.dll < 6.0.
void wxToolBar::OnEraseBackground(wxEraseEvent& event)
{
MSWDoEraseBackground(event.GetDC()->GetHDC());
}
bool wxToolBar::HandleSize(WXWPARAM WXUNUSED(wParam), WXLPARAM lParam) bool wxToolBar::HandleSize(WXWPARAM WXUNUSED(wParam), WXLPARAM lParam)
{ {
// wait until we have some tools // wait until we have some tools