From e67e249752fb5814557fa4bc49c1bf1457263229 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 27 Sep 2012 12:46:53 +0000 Subject: [PATCH] Avoid useless iteration on all pages in wxBookCtrlBase::DoGetBestSize(). If m_fitToCurrentPage is true, there is no need to iterate over all the pages computing their max best size only in order to overwrite it with the best size of the current page later. This doesn't result in any changes in the behaviour, just avoids useless best size computations. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/bookctrl.cpp | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/common/bookctrl.cpp b/src/common/bookctrl.cpp index 92846f30aa..3b1bfc6d1c 100644 --- a/src/common/bookctrl.cpp +++ b/src/common/bookctrl.cpp @@ -137,26 +137,30 @@ wxSize wxBookCtrlBase::DoGetBestSize() const { wxSize bestSize; - // iterate over all pages, get the largest width and height - const size_t nCount = m_pages.size(); - for ( size_t nPage = 0; nPage < nCount; nPage++ ) + if (m_fitToCurrentPage && GetCurrentPage()) + { + bestSize = GetCurrentPage()->GetBestSize(); + } + else { - const wxWindow * const pPage = m_pages[nPage]; - if( pPage ) + // iterate over all pages, get the largest width and height + const size_t nCount = m_pages.size(); + for ( size_t nPage = 0; nPage < nCount; nPage++ ) { - wxSize childBestSize(pPage->GetBestSize()); + const wxWindow * const pPage = m_pages[nPage]; + if( pPage ) + { + wxSize childBestSize(pPage->GetBestSize()); - if ( childBestSize.x > bestSize.x ) - bestSize.x = childBestSize.x; + if ( childBestSize.x > bestSize.x ) + bestSize.x = childBestSize.x; - if ( childBestSize.y > bestSize.y ) - bestSize.y = childBestSize.y; + if ( childBestSize.y > bestSize.y ) + bestSize.y = childBestSize.y; + } } } - if (m_fitToCurrentPage && GetCurrentPage()) - bestSize = GetCurrentPage()->GetBestSize(); - // convert display area to window area, adding the size necessary for the // tabs wxSize best = CalcSizeFromPage(bestSize); -- 2.47.2