]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/notebook.cpp
added test mode to wxLongLongWx which allowed to find the bug in operator*=()
[wxWidgets.git] / src / msw / notebook.cpp
index ef0944b4af45df4ec01eeb42f3c86d69997c4a5d..43b70d1dbb39ec453423a8ba12b18e10c8b6060c 100644 (file)
 
 // wxWindows
 #ifndef WX_PRECOMP
 
 // wxWindows
 #ifndef WX_PRECOMP
-  #include  <wx/string.h>
+  #include  "wx/string.h"
 #endif  // WX_PRECOMP
 
 #endif  // WX_PRECOMP
 
-#include  <wx/log.h>
-#include  <wx/imaglist.h>
-#include  <wx/event.h>
-#include  <wx/control.h>
-#include  <wx/notebook.h>
+#include  "wx/log.h"
+#include  "wx/imaglist.h"
+#include  "wx/event.h"
+#include  "wx/control.h"
+#include  "wx/notebook.h"
 
 
-#include  <wx/msw/private.h>
+#include  "wx/msw/private.h"
 
 // Windows standard headers
 #ifndef   __WIN95__
 
 // Windows standard headers
 #ifndef   __WIN95__
@@ -83,7 +83,6 @@
 // event table
 // ----------------------------------------------------------------------------
 
 // event table
 // ----------------------------------------------------------------------------
 
-#if !USE_SHARED_LIBRARIES
   BEGIN_EVENT_TABLE(wxNotebook, wxControl)
     EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange)
 
   BEGIN_EVENT_TABLE(wxNotebook, wxControl)
     EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange)
 
@@ -96,7 +95,6 @@
 
   IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl)
   IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent)
 
   IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl)
   IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent)
-#endif
 
 // ============================================================================
 // implementation
 
 // ============================================================================
 // implementation
@@ -167,7 +165,7 @@ bool wxNotebook::Create(wxWindow *parent,
     tabStyle |= TCS_VERTICAL;
   if (m_windowStyle & wxNB_RIGHT)
     tabStyle |= TCS_VERTICAL|TCS_RIGHT;
     tabStyle |= TCS_VERTICAL;
   if (m_windowStyle & wxNB_RIGHT)
     tabStyle |= TCS_VERTICAL|TCS_RIGHT;
-        
+
 
   if ( !MSWCreate(GetId(), GetParent(), WC_TABCONTROL,
                   this, NULL, pos.x, pos.y, size.x, size.y,
 
   if ( !MSWCreate(GetId(), GetParent(), WC_TABCONTROL,
                   this, NULL, pos.x, pos.y, size.x, size.y,
@@ -316,6 +314,9 @@ bool wxNotebook::DeletePage(int nPage)
       // no selection if the notebook became empty
       m_nSelection = -1;
   }
       // no selection if the notebook became empty
       m_nSelection = -1;
   }
+  else
+      m_nSelection = TabCtrl_GetCurSel(m_hwnd);
+
 
   return TRUE;
 }
 
   return TRUE;
 }
@@ -329,6 +330,11 @@ bool wxNotebook::RemovePage(int nPage)
 
   m_aPages.Remove(nPage);
 
 
   m_aPages.Remove(nPage);
 
+  if ( m_aPages.IsEmpty() )
+      m_nSelection = -1;
+    else
+      m_nSelection = TabCtrl_GetCurSel(m_hwnd);
+
   return TRUE;
 }
 
   return TRUE;
 }
 
@@ -344,6 +350,8 @@ bool wxNotebook::DeleteAllPages()
 
   TabCtrl_DeleteAllItems(m_hwnd);
 
 
   TabCtrl_DeleteAllItems(m_hwnd);
 
+  m_nSelection = -1;
+
   return TRUE;
 }
 
   return TRUE;
 }
 
@@ -408,6 +416,14 @@ bool wxNotebook::InsertPage(int nPage,
   // this updates internal flag too - otherwise it will get out of sync
   pPage->Show(FALSE);
 
   // this updates internal flag too - otherwise it will get out of sync
   pPage->Show(FALSE);
 
+  // fit the notebook page to the tab control's display area
+  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);
+
+
   // some page should be selected: either this one or the first one if there is
   // still no selection
   int selNew = -1;
   // some page should be selected: either this one or the first one if there is
   // still no selection
   int selNew = -1;
@@ -438,8 +454,6 @@ void wxNotebook::OnSize(wxSizeEvent& event)
   for ( size_t nPage = 0; nPage < nCount; nPage++ ) {
     wxNotebookPage *pPage = m_aPages[nPage];
     pPage->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);
   for ( size_t nPage = 0; nPage < nCount; nPage++ ) {
     wxNotebookPage *pPage = m_aPages[nPage];
     pPage->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);
-    if ( pPage->GetAutoLayout() )
-      pPage->Layout();
   }
 
   event.Skip();
   }
 
   event.Skip();
@@ -453,7 +467,7 @@ void wxNotebook::OnSelChange(wxNotebookEvent& event)
       int sel = event.GetOldSelection();
       if ( sel != -1 )
         m_aPages[sel]->Show(FALSE);
       int sel = event.GetOldSelection();
       if ( sel != -1 )
         m_aPages[sel]->Show(FALSE);
-      
+
       sel = event.GetSelection();
       if ( sel != -1 )
       {
       sel = event.GetSelection();
       if ( sel != -1 )
       {
@@ -461,7 +475,7 @@ void wxNotebook::OnSelChange(wxNotebookEvent& event)
         pPage->Show(TRUE);
         pPage->SetFocus();
       }
         pPage->Show(TRUE);
         pPage->SetFocus();
       }
-      
+
       m_nSelection = sel;
   }
 
       m_nSelection = sel;
   }