]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/notebook.cpp
More style fixes
[wxWidgets.git] / src / msw / notebook.cpp
index f2920163e9a8b308c776d548431f7dee76b8d4e3..1a5c80b40d1fb8ad8f9b1d7ef36377c925514dfc 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     11.06.98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 
 #include  <windowsx.h>  // for SetWindowFont
 
-#ifndef __TWIN32__
-    #ifdef __GNUWIN32_OLD__
-        #include "wx/msw/gnuwin32/extra.h"
-    #endif
+#ifdef __GNUWIN32_OLD__
+    #include "wx/msw/gnuwin32/extra.h"
 #endif
 
-#if defined(__WIN95__) && !((defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) && !defined(__CYGWIN10__))
+#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__))
     #include <commctrl.h>
 #endif
 
@@ -142,12 +140,11 @@ bool wxNotebook::Create(wxWindow *parent,
                         const wxString& name)
 {
     // base init
-    if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) )
+    if ( !CreateControl(parent, id, pos, size, style | wxTAB_TRAVERSAL,
+                        wxDefaultValidator, name) )
         return FALSE;
 
-    // notebook, so explicitly specify 0 as last parameter
-    if ( !MSWCreateControl(WC_TABCONTROL, _T(""), pos, size,
-                style | wxTAB_TRAVERSAL) )
+    if ( !MSWCreateControl(WC_TABCONTROL, _T(""), pos, size) )
         return FALSE;
 
     SetBackgroundColour(wxColour(::GetSysColor(COLOR_BTNFACE)));
@@ -314,6 +311,21 @@ void wxNotebook::SetTabSize(const wxSize& sz)
     ::SendMessage(GetHwnd(), TCM_SETITEMSIZE, 0, MAKELPARAM(sz.x, sz.y));
 }
 
+void wxNotebook::AdjustPageSize(wxNotebookPage *page)
+{
+    wxCHECK_RET( page, _T("NULL page in wxNotebook::AdjustPageSize") );
+
+    RECT rc;
+    rc.left =
+    rc.top = 0;
+
+    // get the page size from the notebook size
+    GetSize((int *)&rc.right, (int *)&rc.bottom);
+    TabCtrl_AdjustRect(m_hwnd, FALSE, &rc);
+
+    page->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);
+}
+
 // ----------------------------------------------------------------------------
 // wxNotebook operations
 // ----------------------------------------------------------------------------
@@ -386,15 +398,6 @@ bool wxNotebook::DeleteAllPages()
   return TRUE;
 }
 
-// add a page to the notebook
-bool wxNotebook::AddPage(wxNotebookPage *pPage,
-                         const wxString& strText,
-                         bool bSelect,
-                         int imageId)
-{
-  return InsertPage(GetPageCount(), pPage, strText, bSelect, imageId);
-}
-
 // same as AddPage() but does it at given position
 bool wxNotebook::InsertPage(int nPage,
                             wxNotebookPage *pPage,
@@ -406,6 +409,8 @@ bool wxNotebook::InsertPage(int nPage,
     wxCHECK_MSG( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE,
                  _T("invalid index in wxNotebook::InsertPage") );
 
+    wxASSERT_MSG( pPage->GetParent() == this,
+                    _T("notebook pages must have notebook as parent") );
 
     // add a new tab to the control
     // ----------------------------
@@ -431,15 +436,11 @@ bool wxNotebook::InsertPage(int nPage,
     // fit the notebook page to the tab control's display area: this should be
     // done before adding it to the notebook or TabCtrl_InsertItem() will
     // change the notebooks size itself!
-    RECT rc;
-    rc.left = rc.top = 0;
-    GetSize((int *)&rc.right, (int *)&rc.bottom);
-    TabCtrl_AdjustRect(m_hwnd, FALSE, &rc);
-    pPage->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);
-
+    AdjustPageSize(pPage);
 
     // finally do insert it
-    if ( TabCtrl_InsertItem(m_hwnd, nPage, &tcItem) == -1 ) {
+    if ( TabCtrl_InsertItem(m_hwnd, nPage, &tcItem) == -1 )
+    {
         wxLogError(wxT("Can't create the notebook page '%s'."), strText.c_str());
 
         return FALSE;
@@ -448,6 +449,14 @@ bool wxNotebook::InsertPage(int nPage,
     // succeeded: save the pointer to the page
     m_pages.Insert(pPage, nPage);
 
+    // for the first page (only) we need to adjust the size again because the
+    // notebook size changed: the tabs which hadn't been there before are now
+    // shown
+    if ( m_pages.GetCount() == 1 )
+    {
+        AdjustPageSize(pPage);
+    }
+
     // hide the page: unless it is selected, it shouldn't be shown (and if it
     // is selected it will be shown later)
     HWND hwnd = GetWinHwnd(pPage);
@@ -604,6 +613,8 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
 // wxNotebook base class virtuals
 // ----------------------------------------------------------------------------
 
+#if wxUSE_CONSTRAINTS
+
 // override these 2 functions to do nothing: everything is done in OnSize
 
 void wxNotebook::SetConstraintSizes(bool WXUNUSED(recurse))
@@ -617,6 +628,8 @@ bool wxNotebook::DoPhase(int WXUNUSED(nPhase))
   return TRUE;
 }
 
+#endif // wxUSE_CONSTRAINTS
+
 // ----------------------------------------------------------------------------
 // wxNotebook Windows message handlers
 // ----------------------------------------------------------------------------