]> git.saurik.com Git - wxWidgets.git/commitdiff
Erase toolbar background even if it doesn't contain any controls/spaces.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 23 Dec 2009 21:42:06 +0000 (21:42 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 23 Dec 2009 21:42:06 +0000 (21:42 +0000)
Minor correction to changes in r62971: we still need to hook WM_ERASEBKGND in
toolbar parent when painting the toolbar itself even when there are no dummy
separators in it (and so we don't need to paint them over). Without this, the
background of simple toolbars without controls was not erased correctly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62980 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/toolbar.cpp

index 5dd2f917ff53fa72605c1aed0142a65ec45bfc57..31233565bd00a64bd82e1f518ad4f49fcf46df67 100644 (file)
@@ -1744,18 +1744,15 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
         }
     }
 
-    if ( !rgnDummySeps.IsOk() )
+    if ( rgnDummySeps.IsOk() )
     {
-        // don't interfere with toolbar default painting at all if we don't
-        // need to -- and we don't if we have no dummy separators at all
-        return false;
-    }
-
-    // exclude the area occupied by the controls and stretchable spaces from
-    // the update region to prevent the toolbar from drawing separators in it
-    if ( !::ValidateRgn(GetHwnd(), GetHrgnOf(rgnDummySeps)) )
-    {
-        wxLogLastError(wxT("ValidateRgn()"));
+        // exclude the area occupied by the controls and stretchable spaces
+        // from the update region to prevent the toolbar from drawing
+        // separators in it
+        if ( !::ValidateRgn(GetHwnd(), GetHrgnOf(rgnDummySeps)) )
+        {
+            wxLogLastError(wxT("ValidateRgn()"));
+        }
     }
 
     // still let the native control draw everything else normally but set up a
@@ -1779,11 +1776,14 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
         GetParent()->MSWSetEraseBgHook(NULL);
 
 
-    // erase the dummy separators region ourselves now as nobody painted over
-    // them
-    WindowHDC hdc(GetHwnd());
-    ::SelectClipRgn(hdc, GetHrgnOf(rgnDummySeps));
-    MSWDoEraseBackground(hdc);
+    if ( rgnDummySeps.IsOk() )
+    {
+        // erase the dummy separators region ourselves now as nobody painted
+        // over them
+        WindowHDC hdc(GetHwnd());
+        ::SelectClipRgn(hdc, GetHrgnOf(rgnDummySeps));
+        MSWDoEraseBackground(hdc);
+    }
 
     return true;
 }