]> git.saurik.com Git - wxWidgets.git/commitdiff
Account correctly for the controller when computing wxBookCtrl best size.
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 27 Sep 2012 12:47:40 +0000 (12:47 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 27 Sep 2012 12:47:40 +0000 (12:47 +0000)
We must not increase the total control size in the direction along the
controller window as the size of the controller in this direction is
determined by the size of the control itself. So doing this resulted in always
increasing best size in this direction to be at least equal to the current
size which was wrong.

Closes #14496.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/bookctrl.cpp

index 6ab3784e11574d9f2ba4836ecf323b7b32259c66..9f0e284652550a55169d1529220b9825783bb5ee 100644 (file)
@@ -109,21 +109,17 @@ wxSize wxBookCtrlBase::CalcSizeFromPage(const wxSize& sizePage) const
     if ( !m_bookctrl || !m_bookctrl->IsShown() )
         return sizePage;
 
     if ( !m_bookctrl || !m_bookctrl->IsShown() )
         return sizePage;
 
+    // Notice that the controller size is its current size while we really want
+    // to have its best size. So we only take into account its size in the
+    // direction in which we should add it but not in the other one, where the
+    // controller size is determined by the size of wxBookCtrl itself.
     const wxSize sizeController = GetControllerSize();
 
     wxSize size = sizePage;
     if ( IsVertical() )
     const wxSize sizeController = GetControllerSize();
 
     wxSize size = sizePage;
     if ( IsVertical() )
-    {
-        if ( sizeController.x > sizePage.x )
-            size.x = sizeController.x;
         size.y += sizeController.y + GetInternalBorder();
         size.y += sizeController.y + GetInternalBorder();
-    }
     else // left/right aligned
     else // left/right aligned
-    {
         size.x += sizeController.x + GetInternalBorder();
         size.x += sizeController.x + GetInternalBorder();
-        if ( sizeController.y > sizePage.y )
-            size.y = sizeController.y;
-    }
 
     return size;
 }
 
     return size;
 }