]> git.saurik.com Git - wxWidgets.git/commitdiff
set min size to initial size when it is explicitly given
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 3 May 2004 12:42:46 +0000 (12:42 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 3 May 2004 12:42:46 +0000 (12:42 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27075 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/wincmn.cpp

index 09cc4d70afdb4d95a1871ecdd522ed31d21cd528..beeea899323840b312ff39bb1cd44bf5ccbb6c67 100644 (file)
@@ -598,21 +598,27 @@ void wxWindowBase::SetBestSize(const wxSize& size)
 {
     // the size only needs to be changed if the current size is incomplete,
     // i.e. one of the components was specified as default -- so if both
 {
     // the size only needs to be changed if the current size is incomplete,
     // i.e. one of the components was specified as default -- so if both
-    // were given, simply don't do anything
+    // were given, simply don't do anything and in particular don't call
+    // potentially expensive DoGetBestSize()
+    wxSize sizeBest;
     if ( size.x == -1 || size.y == -1 )
     {
     if ( size.x == -1 || size.y == -1 )
     {
-        wxSize sizeBest = DoGetBestSize();
+        sizeBest = DoGetBestSize();
         if ( size.x != -1 )
             sizeBest.x = size.x;
         if ( size.y != -1 )
             sizeBest.y = size.y;
 
         SetSize(sizeBest);
         if ( size.x != -1 )
             sizeBest.x = size.x;
         if ( size.y != -1 )
             sizeBest.y = size.y;
 
         SetSize(sizeBest);
-
-        // don't shrink the control below its best size
-        m_minWidth = sizeBest.x;
-        m_minHeight = sizeBest.y;
     }
     }
+    else // have explicit size
+    {
+        sizeBest = size;
+    }
+
+    // don't shrink the control below its best size
+    m_minWidth = sizeBest.x;
+    m_minHeight = sizeBest.y;
 }
 
 // by default the origin is not shifted
 }
 
 // by default the origin is not shifted