]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/tbar95.cpp
fixed incorrectly inversed test for parent [not] being deleted (patch 1624472)
[wxWidgets.git] / src / msw / tbar95.cpp
index 1e93c69901aca152cff3936f935ceb0823509920..64a3802e260ea5492881730cc2b425b450ef07f0 100644 (file)
@@ -234,6 +234,8 @@ bool wxToolBar::Create(wxWindow *parent,
     if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) )
         return false;
 
+    FixupStyle();
+
     // MSW-specific initialisation
     if ( !MSWCreateToolbar(pos, size) )
         return false;
@@ -347,7 +349,7 @@ wxSize wxToolBar::DoGetBestSize() const
         sizeBest.x *= GetToolsCount();
 
         // reverse horz and vertical components if necessary
-        if ( HasFlag(wxTB_VERTICAL) )
+        if ( IsVertical() )
         {
             int t = sizeBest.x;
             sizeBest.x = sizeBest.y;
@@ -402,6 +404,12 @@ WXDWORD wxToolBar::MSWGetStyle(long style, WXDWORD *exstyle) const
     if ( style & wxTB_VERTICAL )
         msStyle |= CCS_VERT;
 
+    if( style & wxTB_BOTTOM )
+        msStyle |= CCS_BOTTOM;
+
+    if ( style & wxTB_RIGHT )
+        msStyle |= CCS_RIGHT;
+
     return msStyle;
 }
 
@@ -538,8 +546,6 @@ bool wxToolBar::Realize()
         // nothing to do
         return true;
 
-    const bool isVertical = HasFlag(wxTB_VERTICAL);
-
 #ifdef wxREMAP_BUTTON_COLOURS
     // don't change the values of these constants, they can be set from the
     // user code via wxSystemOptions
@@ -778,17 +784,21 @@ bool wxToolBar::Realize()
             }
         }
 
-        if ( m_disabledImgList )
+        // disable image lists are only supported in comctl32.dll 4.70+
+        if ( wxApp::GetComCtl32Version() >= 470 )
         {
+            HIMAGELIST hil = m_disabledImgList
+                                ? GetHimagelistOf(m_disabledImgList)
+                                : 0;
+
+            // notice that we set the image list even if don't have one right
+            // now as we could have it before and need to reset it in this case
             HIMAGELIST oldImageList = (HIMAGELIST)
-                ::SendMessage(GetHwnd(),
-                              TB_SETDISABLEDIMAGELIST,
-                              0,
-                              (LPARAM)GetHimagelistOf(m_disabledImgList));
+              ::SendMessage(GetHwnd(), TB_SETDISABLEDIMAGELIST, 0, (LPARAM)hil);
 
             // delete previous image list if any
             if ( oldImageList )
-                ::DeleteObject( oldImageList );
+                ::DeleteObject(oldImageList);
         }
     }
 
@@ -816,7 +826,7 @@ bool wxToolBar::Realize()
 
         // don't add separators to the vertical toolbar with old comctl32.dll
         // versions as they didn't handle this properly
-        if ( isVertical && tool->IsSeparator() &&
+        if ( IsVertical() && tool->IsSeparator() &&
                 wxApp::GetComCtl32Version() <= 472 )
         {
             continue;
@@ -940,7 +950,7 @@ bool wxToolBar::Realize()
         // get the items size for all items but for the horizontal ones we
         // don't need to deal with the non controls
         bool isControl = tool->IsControl();
-        if ( !isControl && !isVertical )
+        if ( !isControl && !IsVertical() )
             continue;
 
         // note that we use TB_GETITEMRECT and not TB_GETRECT because the
@@ -1031,7 +1041,7 @@ bool wxToolBar::Realize()
         }
 
         int top;
-        if ( isVertical )
+        if ( IsVertical() )
         {
             left = 0;
             top = y;
@@ -1053,7 +1063,7 @@ bool wxToolBar::Realize()
     // separators which we added just for aligning the controls
     m_nButtons = index;
 
-    if ( !isVertical )
+    if ( !IsVertical() )
     {
         if ( m_maxRows == 0 )
             // if not set yet, only one row
@@ -1425,7 +1435,7 @@ bool wxToolBar::HandleSize(WXWPARAM WXUNUSED(wParam), WXLPARAM lParam)
     {
         int w, h;
 
-        if ( GetWindowStyle() & wxTB_VERTICAL )
+        if ( IsVertical() )
         {
             w = r.right - r.left;
             if ( m_maxRows )