]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/nbkbase.cpp
Partially applied patch [ 531199 ] new EVT_MOVING and EVT_SIZING
[wxWidgets.git] / src / common / nbkbase.cpp
index ccc78efd571a3f26b6bb13e006704ebde51a7ffd..4b95397039f9589cd2d2477072106d9209266c85 100644 (file)
 #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 <commctrl.h>
+#include "wx/msw/winundef.h"
+#endif
+
 // ============================================================================
 // implementation
 // ============================================================================
@@ -86,32 +96,26 @@ 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;
     
-    // Mac has large notebook borders.
-
+       // 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;
-#ifdef __WXMAC__
-        sizeTotal.y += 28;
-#else
         sizeTotal.y += 10;
-#endif
     }
     else
     {
-#ifdef __WXMAC__
-        sizeTotal.x += 34;   // This is OK for Aqua.
-        sizeTotal.y += 46;
-#else
         sizeTotal.x += 10;
         sizeTotal.y += 40;
-#endif
     }
 
     return sizeTotal;
@@ -143,6 +147,21 @@ wxNotebookPage *wxNotebookBase::DoRemovePage(int 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;