]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/notebook.cpp
Removed floor() references
[wxWidgets.git] / src / msw / notebook.cpp
index 8eb91dbc34004841cf0eaad86b569b1af4a27a9b..e5ff7ec7f44fb630f556a0ef1adebd192a568a91 100644 (file)
@@ -2,7 +2,7 @@
 // Name:        msw/notebook.cpp
 // Purpose:     implementation of wxNotebook
 // Author:      Vadim Zeitlin
-// Modified by: 
+// Modified by:
 // Created:     11.06.98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
   BEGIN_EVENT_TABLE(wxNotebook, wxControl)
     EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange)
 
-    EVT_SIZE(wxNotebook::OnSize)
-    EVT_ERASE_BACKGROUND(wxNotebook::OnEraseBackground)
+    // doesn't work yet EVT_WINDOW_CREATE(wxNotebook::OnWindowCreate)
+    EVT_SIZE(wxNotebook::OnWindowCreate)
+
     EVT_SET_FOCUS(wxNotebook::OnSetFocus)
+
     EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey)
   END_EVENT_TABLE()
 
@@ -121,10 +123,7 @@ bool wxNotebook::Create(wxWindow *parent,
                         const wxString& name)
 {
   // base init
-  SetName(name);
-  SetParent(parent);
-
-  m_windowId = id == -1 ? NewControlId() : id;
+  CreateBase(parent, id, pos, size, style, name);
 
   // colors and font
   m_backgroundColour = wxColour(GetSysColor(COLOR_BTNFACE));
@@ -144,34 +143,21 @@ bool wxNotebook::Create(wxWindow *parent,
   if (m_windowStyle & wxNB_FIXEDWIDTH)
     tabStyle |= TCS_FIXEDWIDTH ;
 
-  // create the tab control.
-  m_hWnd = (WXHWND)CreateWindowEx
-    (
-      0,                                      // extended style
-      WC_TABCONTROL,                          // class name for the tab control
-      "",                                     // no caption
-      tabStyle,                               // style
-      pos.x, pos.y, size.x, size.y,           // size and position
-      (HWND)parent->GetHWND(),                // parent window
-      (HMENU)m_windowId,                      // child id
-      wxGetInstance(),                        // current instance
-      NULL                                    // no class data
-    );
-
-  if ( m_hWnd == 0 ) {
-    wxLogSysError("Can't create the notebook control");
+  if ( !MSWCreate(GetId(), GetParent(), WC_TABCONTROL,
+                  this, NULL, pos.x, pos.y, size.x, size.y,
+                  tabStyle, NULL, 0) )
+  {
     return FALSE;
   }
 
   // Not all compilers recognise SetWindowFont
-//  SetWindowFont((HWND)m_hwnd, ::GetStockObject(DEFAULT_GUI_FONT), FALSE);
-  ::SendMessage((HWND) m_hwnd, WM_SETFONT,
-                  (WPARAM)::GetStockObject(DEFAULT_GUI_FONT),TRUE);
+  ::SendMessage(GetHwnd(), WM_SETFONT,
+                (WPARAM)::GetStockObject(DEFAULT_GUI_FONT), TRUE);
 
 
-  if ( parent != NULL ) 
+  if ( parent != NULL )
     parent->AddChild(this);
-  
+
   SubclassWin(m_hWnd);
 
   return TRUE;
@@ -267,11 +253,19 @@ bool wxNotebook::SetPageImage(int nPage, int nImage)
 }
 
 void wxNotebook::SetImageList(wxImageList* imageList)
-{ 
+{
   m_pImageList = imageList;
   TabCtrl_SetImageList(m_hwnd, (HIMAGELIST)imageList->GetHIMAGELIST());
 }
 
+
+// Windows-only at present. Also, you must use the wxNB_FIXEDWIDTH
+// style.
+void wxNotebook::SetTabSize(const wxSize& sz)
+{
+    ::SendMessage(GetHwnd(), TCM_SETITEMSIZE, 0, MAKELPARAM(sz.x, sz.y));
+}
+
 // ----------------------------------------------------------------------------
 // wxNotebook operations
 // ----------------------------------------------------------------------------
@@ -304,8 +298,6 @@ bool wxNotebook::RemovePage(int nPage)
 // remove all pages
 bool wxNotebook::DeleteAllPages()
 {
-  TabCtrl_DeleteAllItems(m_hwnd);
-
   int nPageCount = GetPageCount();
   int nPage;
   for ( nPage = 0; nPage < nPageCount; nPage++ )
@@ -313,6 +305,8 @@ bool wxNotebook::DeleteAllPages()
 
   m_aPages.Clear();
 
+  TabCtrl_DeleteAllItems(m_hwnd);
+
   return TRUE;
 }
 
@@ -363,7 +357,7 @@ bool wxNotebook::InsertPage(int nPage,
   // save the pointer to the page
   m_aPages.Insert(pPage, nPage);
 
-  // some page must be selected: either this one or the first one if there is 
+  // some page must be selected: either this one or the first one if there is
   // still no selection
   if ( bSelect )
     m_nSelection = nPage;
@@ -371,9 +365,12 @@ bool wxNotebook::InsertPage(int nPage,
     m_nSelection = 0;
 
   // don't show pages by default (we'll need to adjust their size first)
-  HWND hwnd = (HWND)pPage->GetHWND();
+  HWND hwnd = GetWinHwnd(pPage);
   SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_VISIBLE);
 
+  // this updates internal flag too - otherwise it will get out of sync
+  pPage->Show(FALSE);
+
   return TRUE;
 }
 
@@ -381,7 +378,7 @@ bool wxNotebook::InsertPage(int nPage,
 // wxNotebook callbacks
 // ----------------------------------------------------------------------------
 
-void wxNotebook::OnSize(wxSizeEvent& event)
+void wxNotebook::OnWindowCreate(wxWindowCreateEvent& event)
 {
   // make sure the current page is shown and has focus (it's useful because all
   // pages are created invisible initially)
@@ -459,11 +456,6 @@ bool wxNotebook::DoPhase(int /* nPhase */)
   return TRUE;
 }
 
-void wxNotebook::Command(wxCommandEvent& event)
-{
-  wxFAIL_MSG("wxNotebook::Command not implemented");
-}
-
 bool wxNotebook::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM* result)
 {
   wxNotebookEvent event(wxEVT_NULL, m_windowId);
@@ -538,16 +530,3 @@ void wxNotebook::ChangePage(int nOldSel, int nSel)
   m_nSelection = nSel;
   s_bInsideChangePage = FALSE;
 }
-
-void wxNotebook::OnEraseBackground(wxEraseEvent& event)
-{
-    Default();
-}
-
-// Windows-only at present. Also, you must use the wxNB_FIXEDWIDTH
-// style.
-void wxNotebook::SetTabSize(const wxSize& sz)
-{
-    ::SendMessage((HWND) GetHWND(), TCM_SETITEMSIZE, 0, MAKELPARAM(sz.x, sz.y));
-}
-