Improve wxBookCtrlBase controller size calculations.

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
This commit is contained in:
Vadim Zeitlin
2012-05-09 14:24:44 +00:00
parent d119983947
commit 402dae7b46

View File

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