X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/233387bdcbb1c4f31c54b0fe6b3f03e8d261cab1..2936a6b18cfcc0093e55e4484a6514fb28f07d21:/src/common/bookctrl.cpp diff --git a/src/common/bookctrl.cpp b/src/common/bookctrl.cpp index 63f34b0d7b..b61570f183 100644 --- a/src/common/bookctrl.cpp +++ b/src/common/bookctrl.cpp @@ -53,12 +53,16 @@ void wxBookCtrlBase::Init() m_bookctrl = NULL; m_imageList = NULL; m_ownsImageList = false; + m_fitToCurrentPage = false; #if defined(__WXWINCE__) m_internalBorder = 1; #else m_internalBorder = 5; #endif + + m_controlMargin = 0; + m_controlSizer = NULL; } bool @@ -143,6 +147,9 @@ wxSize wxBookCtrlBase::DoGetBestSize() const bestSize.y = childBestSize.y; } } + + if (m_fitToCurrentPage && GetCurrentPage()) + bestSize = GetCurrentPage()->GetBestSize(); // convert display area to window area, adding the size necessary for the // tabs @@ -260,39 +267,44 @@ void wxBookCtrlBase::DoSize() // we're not fully created yet or OnSize() should be hidden by derived class return; } - - // resize controller and the page area to fit inside our new size - const wxSize sizeClient( GetClientSize() ), - sizeBorder( m_bookctrl->GetSize() - m_bookctrl->GetClientSize() ), - sizeCtrl( GetControllerSize() ); - - m_bookctrl->SetClientSize( sizeCtrl.x - sizeBorder.x, sizeCtrl.y - sizeBorder.y ); - - const wxSize sizeNew = m_bookctrl->GetSize(); - wxPoint posCtrl; - switch ( GetWindowStyle() & wxBK_ALIGN_MASK ) + + if (GetSizer()) + Layout(); + else { - default: - wxFAIL_MSG( _T("unexpected alignment") ); - // fall through + // resize controller and the page area to fit inside our new size + const wxSize sizeClient( GetClientSize() ), + sizeBorder( m_bookctrl->GetSize() - m_bookctrl->GetClientSize() ), + sizeCtrl( GetControllerSize() ); - case wxBK_TOP: - case wxBK_LEFT: - // posCtrl is already ok - break; + m_bookctrl->SetClientSize( sizeCtrl.x - sizeBorder.x, sizeCtrl.y - sizeBorder.y ); - case wxBK_BOTTOM: - posCtrl.y = sizeClient.y - sizeNew.y; - break; + const wxSize sizeNew = m_bookctrl->GetSize(); + wxPoint posCtrl; + switch ( GetWindowStyle() & wxBK_ALIGN_MASK ) + { + default: + wxFAIL_MSG( _T("unexpected alignment") ); + // fall through + + case wxBK_TOP: + case wxBK_LEFT: + // posCtrl is already ok + break; + + case wxBK_BOTTOM: + posCtrl.y = sizeClient.y - sizeNew.y; + break; + + case wxBK_RIGHT: + posCtrl.x = sizeClient.x - sizeNew.x; + break; + } - case wxBK_RIGHT: - posCtrl.x = sizeClient.x - sizeNew.x; - break; + if ( m_bookctrl->GetPosition() != posCtrl ) + m_bookctrl->Move(posCtrl); } - if ( m_bookctrl->GetPosition() != posCtrl ) - m_bookctrl->Move(posCtrl); - // resize the currently shown page if (GetSelection() != wxNOT_FOUND ) {