]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/tbar95.cpp
Add accelerator back to label in GetItemLabel
[wxWidgets.git] / src / msw / tbar95.cpp
index b766b3f2bc07e9aa1c83c52ab5406cbc97f8ae63..86b92ac0350cc88252cb4df1d4255be216ebde40 100644 (file)
@@ -303,8 +303,10 @@ bool wxToolBar::MSWCreateToolbar(const wxPoint& pos, const wxSize& size)
     // toolbar-specific post initialisation
     ::SendMessage(GetHwnd(), TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
 
+#ifdef TB_SETEXTENDEDSTYLE
     if ( wxApp::GetComCtl32Version() >= 471 )
         ::SendMessage(GetHwnd(), TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS);
+#endif
 
     return true;
 }
@@ -403,8 +405,16 @@ wxSize wxToolBar::DoGetBestSize() const
         sizeBest.y = size.cy;
     }
 
-    if (!IsVertical() && !(GetWindowStyle() & wxTB_NODIVIDER))
-        sizeBest.y += 1;
+    if (!IsVertical())
+    {
+        // Without the extra height, DoGetBestSize can report a size that's
+        // smaller than the actual window, causing windows to overlap slightly
+        // in some circumstances, leading to missing borders (especially noticeable
+        // in AUI layouts).
+        if (!(GetWindowStyle() & wxTB_NODIVIDER))
+            sizeBest.y += 2;
+        sizeBest.y ++;
+       }
 
     CacheBestSize(sizeBest);
 
@@ -1548,7 +1558,7 @@ void wxToolBar::OnEraseBackground(wxEraseEvent& event)
     }
 
     // Only draw a rebar theme on Vista, since it doesn't jive so well with XP
-    if ( !UseBgCol() && majorVersion >= 6)
+    if ( !UseBgCol() && majorVersion >= 6 )
     {
         wxUxThemeEngine *theme = wxUxThemeEngine::GetIfActive();
         if ( theme )
@@ -1727,16 +1737,7 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
                 // does it intersect the control?
                 wxRect rectItem;
                 wxCopyRECTToRect(r, rectItem);
-                if ( rectCtrl.Intersects(rectItem) )
-                {
-                    // yes, do erase it!
-                    dc.DrawRectangle(rectItem);
-
-                    // Necessary in case we use a no-paint-on-size
-                    // style in the parent: the controls can disappear
-                    control->Refresh(false);
-                }
-                if ( staticText && rectStaticText.Intersects(rectItem) )
+                if ( rectCtrl.Intersects(rectItem) || (staticText && rectStaticText.Intersects(rectItem)))
                 {
                     // yes, do erase it!
 
@@ -1747,7 +1748,7 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
                     {
                         // Don't use DrawThemeBackground
                     }
-                    else if (!UseBgCol() && majorVersion >= 6)
+                    else if ( !UseBgCol() && majorVersion >= 6 )
                     {
                         wxUxThemeEngine *theme = wxUxThemeEngine::GetIfActive();
                         if ( theme )
@@ -1772,7 +1773,17 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
 
                     if (!haveRefreshed)
                         dc.DrawRectangle(rectItem);
+                }
+
+                if ( rectCtrl.Intersects(rectItem) )
+                {
+                    // Necessary in case we use a no-paint-on-size
+                    // style in the parent: the controls can disappear
+                    control->Refresh(false);
+                               }
 
+                if ( staticText && rectStaticText.Intersects(rectItem) )
+                {
                     // Necessary in case we use a no-paint-on-size
                     // style in the parent: the controls can disappear
                     staticText->Refresh(false);