]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sizer.cpp
made wxLocale::GetSystemLanguage and wxLocale::AddLanguage static;
[wxWidgets.git] / src / common / sizer.cpp
index 0a92ab056970a00e32c4854abc47d9f0c318c63a..c49530577e928e6cce07a9d9eca16145941fc847 100644 (file)
@@ -133,21 +133,28 @@ wxSize wxSizerItem::CalcMin()
     if (IsSizer())
     {
         ret = m_sizer->GetMinSize();
     if (IsSizer())
     {
         ret = m_sizer->GetMinSize();
+
         // if we have to preserve aspect ratio _AND_ this is
         // the first-time calculation, consider ret to be initial size
         // if we have to preserve aspect ratio _AND_ this is
         // the first-time calculation, consider ret to be initial size
-        if ((m_flag & wxSHAPED) && !m_ratio) SetRatio(ret);
+        if ((m_flag & wxSHAPED) && !m_ratio)
+            SetRatio(ret);
     }
     }
-
-/*
-    The minimum size of a window should be the
-    initial size, as saved in m_minSize, not the
-    current size.
-
     else
     else
-    if (IsWindow())
-        ret = m_window->GetSize();
-*/
-    else ret = m_minSize;
+    {
+        if ( IsWindow() && (m_flag & wxADJUST_MINSIZE) )
+        {
+            // check if the best (minimal, in fact) window size hadn't changed
+            // by chance: this may happen for, e.g. static text if its label
+            // changed
+            wxSize size = m_window->GetBestSize();
+            if ( size.x > m_minSize.x )
+                m_minSize.x = size.x;
+            if ( size.y > m_minSize.y )
+                m_minSize.y = size.y;
+        }
+
+        ret = m_minSize;
+    }
 
     if (m_flag & wxWEST)
         ret.x += m_border;
 
     if (m_flag & wxWEST)
         ret.x += m_border;