X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd52bee1062faef26287d2f5a2595a9d8ee4d85a..5706de1cf469f1ca53be7c402365d47e12a616cf:/src/common/nbkbase.cpp?ds=sidebyside diff --git a/src/common/nbkbase.cpp b/src/common/nbkbase.cpp index c493e02380..4b95397039 100644 --- a/src/common/nbkbase.cpp +++ b/src/common/nbkbase.cpp @@ -36,6 +36,16 @@ #include "wx/imaglist.h" #include "wx/notebook.h" +#ifdef __GNUWIN32_OLD__ + #include "wx/msw/gnuwin32/extra.h" +#endif + +#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__)) +#include "wx/msw/private.h" +#include +#include "wx/msw/winundef.h" +#endif + // ============================================================================ // implementation // ============================================================================ @@ -86,15 +96,27 @@ void wxNotebookBase::AssignImageList(wxImageList* imageList) // geometry // ---------------------------------------------------------------------------- -wxSize wxNotebookBase::CalcSizeFromPage(const wxSize& sizePage) +wxSize wxNotebookBase::CalcSizeFromPage(const wxSize& sizePage) const { // this was just taken from wxNotebookSizer::CalcMin() and is, of // course, totally bogus - just like the original code was wxSize sizeTotal = sizePage; + + // changed hajokirchhoff -- May, 31st, 2003 + // moved the __WXMSW__ portion to wxNotebook::CalcSizeFromPage in src/msw/notebook.cpp + // where it really belongs. + // Question: Shouldn't we make wxNotebookBase::CalcSizeFromPage a pure virtual class. + // I'd like this better than this "totally bogus" code here. if ( HasFlag(wxNB_LEFT) || HasFlag(wxNB_RIGHT) ) + { sizeTotal.x += 90; + sizeTotal.y += 10; + } else + { + sizeTotal.x += 10; sizeTotal.y += 40; + } return sizeTotal; } @@ -120,11 +142,26 @@ wxNotebookPage *wxNotebookBase::DoRemovePage(int nPage) _T("invalid page index in wxNotebookBase::DoRemovePage()") ); wxNotebookPage *pageRemoved = m_pages[nPage]; - m_pages.Remove(nPage); + m_pages.RemoveAt(nPage); return pageRemoved; } +wxSize wxNotebookBase::DoGetBestSize() const +{ + wxSize bestSize(0,0); + size_t nCount = m_pages.Count(); + // iterate over all pages, get the largest width and height + for ( size_t nPage = 0; nPage < nCount; nPage++ ) { + wxNotebookPage *pPage = m_pages[nPage]; + wxSize childBestSize(pPage->GetBestSize()); + bestSize.SetWidth(max(childBestSize.GetWidth(), bestSize.GetWidth())); + bestSize.SetHeight(max(childBestSize.GetHeight(), bestSize.GetHeight())); + } + // convert display area to window area, adding the size neccessary for the tab control itself + return CalcSizeFromPage(bestSize); +} + int wxNotebookBase::GetNextPage(bool forward) const { int nPage;