]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sizer.cpp
Conditional compilation fix.
[wxWidgets.git] / src / common / sizer.cpp
index b6e4498e287fc1fb4759948079013749febce075..7123f19c6a62a97926ef7082a6ea123758389bc1 100644 (file)
@@ -193,11 +193,19 @@ wxSize wxSizerItem::CalcMin()
     }
     else
     {
-        if ( IsWindow() )
+        if ( IsWindow() && !(m_flag & wxFIXED_MINSIZE) )
         {
-            // the size of the window may change during run-time, we should
-            // use the current minimal size
-            m_minSize = m_window->GetAdjustedBestSize();
+            // Since the size of the window may change during runtime, we
+            // should use the current minimal size.  If there is a MinSize,
+            // use it, otherwise use the BestSize.
+            wxSize min  = m_window->GetMinSize();
+            if (min.x == -1 || min.y == -1)
+            {
+                wxSize best = m_window->GetBestSize();
+                if (min.x == -1) min.x =  best.x;
+                if (min.y == -1) min.y =  best.y;
+            }
+            m_minSize = min;
         }
 
         ret = m_minSize;
@@ -280,7 +288,10 @@ void wxSizerItem::SetDimension( wxPoint pos, wxSize size )
 void wxSizerItem::DeleteWindows()
 {
     if (m_window)
+    {
          m_window->Destroy();
+         m_window = NULL;
+    }
 
     if (m_sizer)
         m_sizer->DeleteWindows();
@@ -735,7 +746,7 @@ bool wxSizer::DoSetItemMinSize( wxWindow *window, int width, int height )
 
         if (item->GetWindow() == window)
         {
-            item->SetInitSize( width, height );
+            item->SetMinSize( width, height );
             return true;
         }
         node = node->GetNext();
@@ -814,7 +825,7 @@ bool wxSizer::DoSetItemMinSize( size_t index, int width, int height )
     else
     {
         // ... but the minimal size of spacers and windows in stored in them
-        item->SetInitSize( width, height );
+        item->SetMinSize( width, height );
     }
 
     return true;
@@ -1045,20 +1056,20 @@ void wxGridSizer::SetItemBounds( wxSizerItem *item, int x, int y, int w, int h )
     {
         if (flag & wxALIGN_CENTER_HORIZONTAL)
         {
-            pt.x = x + (w - sz.x) / 2;
+            pt.x = x + (w - sz.x - m_hgap) / 2;
         }
         else if (flag & wxALIGN_RIGHT)
         {
-            pt.x = x + (w - sz.x);
+            pt.x = x + (w - sz.x - m_hgap);
         }
 
         if (flag & wxALIGN_CENTER_VERTICAL)
         {
-            pt.y = y + (h - sz.y) / 2;
+            pt.y = y + (h - sz.y - m_vgap) / 2;
         }
         else if (flag & wxALIGN_BOTTOM)
         {
-            pt.y = y + (h - sz.y);
+            pt.y = y + (h - sz.y - m_vgap);
         }
     }
 
@@ -1624,6 +1635,12 @@ wxSize wxStaticBoxSizer::CalcMin()
     return ret;
 }
 
+void wxStaticBoxSizer::ShowItems( bool show )
+{
+    m_staticBox->Show( show );
+    wxBoxSizer::ShowItems( show );
+}
+
 #endif // wxUSE_STATBOX
 
 // ----------------------------------------------------------------------------