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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user