From 20f7966a08489c03c37e4234a7e5b3c1021cec20 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Tue, 4 Sep 2007 06:58:11 +0000 Subject: [PATCH] Only apply the background fix if the toolbar has controls git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@48548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/tbar95.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp index ec04b3525d..249e4b09ff 100644 --- a/src/msw/tbar95.cpp +++ b/src/msw/tbar95.cpp @@ -265,15 +265,6 @@ bool wxToolBar::MSWCreateToolbar(const wxPoint& pos, const wxSize& size) // toolbar-specific post initialisation ::SendMessage(GetHwnd(), TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); - // The toolbar background for some colour schemes cannot be determined - // (for example Silver). So set an explicit background colour to avoid parts of - // the background being painted wrongly. - - int majorVersion, minorVersion; - wxGetOsVersion(& majorVersion, & minorVersion); - if (majorVersion < 6) - SetBackgroundColour(GetBackgroundColour()); - return true; } @@ -959,6 +950,8 @@ bool wxToolBar::Realize() // Deal with the controls finally // ------------------------------ + bool hasControls = false; + // adjust the controls size to fit nicely in the toolbar int y = 0; size_t index = 0; @@ -990,6 +983,8 @@ bool wxToolBar::Realize() continue; } + hasControls = true; + wxControl *control = tool->GetControl(); wxSize size = control->GetSize(); @@ -1099,6 +1094,13 @@ bool wxToolBar::Realize() InvalidateBestSize(); UpdateSize(); + // Fix a bug on e.g. the Silver theme on WinXP where control backgrounds + // are incorrectly drawn, by forcing the background to a specific colour. + int majorVersion, minorVersion; + wxGetOsVersion(& majorVersion, & minorVersion); + if (majorVersion < 6 && hasControls && !!UseBgCol()) + SetBackgroundColour(GetBackgroundColour()); + return true; }