]> git.saurik.com Git - wxWidgets.git/commitdiff
Improve wxBookCtrlBase controller size calculations.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 9 May 2012 14:24:44 +0000 (14:24 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 9 May 2012 14:24:44 +0000 (14:24 +0000)
Use GetBest{Height,Width}() in wxBookCtrlBase to compute the controller
control size height/width from its known (from wxBookCtrlBase size itself)
width/height. This will allow to correctly compute the size of wxListCtrl used
by wxListbook once it provides the necessary support for width-from-height and
height-from-width calculations.

See #13898.

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

src/common/bookctrl.cpp

index 4a588a4ddb500af9d86cad41071100a28a444ef6..d551d8bf2e3fd09d7bc72bb0be113bef82e93e87 100644 (file)
@@ -105,13 +105,11 @@ void wxBookCtrlBase::DoInvalidateBestSize()
 
 wxSize wxBookCtrlBase::CalcSizeFromPage(const wxSize& sizePage) const
 {
-    // We need to add the size of the controller and the border between if it's
-    // shown. Notice that we don't use GetControllerSize() here as it returns
-    // the actual size while we want the best size here.
+    // Add the size of the controller and the border between if it's shown.
     if ( !m_bookctrl || !m_bookctrl->IsShown() )
         return sizePage;
 
-    const wxSize sizeController = m_bookctrl->GetBestSize();
+    const wxSize sizeController = GetControllerSize();
 
     wxSize size = sizePage;
     if ( IsVertical() )
@@ -288,19 +286,19 @@ wxSize wxBookCtrlBase::GetControllerSize() const
     if ( !m_bookctrl || !m_bookctrl->IsShown() )
         return wxSize(0, 0);
 
-    const wxSize sizeClient = GetClientSize(),
-                 sizeCtrl = m_bookctrl->GetBestSize();
+    const wxSize sizeClient = GetClientSize();
 
     wxSize size;
 
+    // Ask for the best width/height considering the other direction.
     if ( IsVertical() )
     {
         size.x = sizeClient.x;
-        size.y = sizeCtrl.y;
+        size.y = m_bookctrl->GetBestHeight(sizeClient.x);
     }
     else // left/right aligned
     {
-        size.x = sizeCtrl.x;
+        size.x = m_bookctrl->GetBestWidth(sizeClient.y);
         size.y = sizeClient.y;
     }