]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/notebook.cpp
wxX11:
[wxWidgets.git] / src / msw / notebook.cpp
index 3ff4dd87cef79f0f60b64abb8e4ae18cb791d9d5..424201d9c643e79ee8b8afb8b738e6b7565cdabd 100644 (file)
@@ -110,7 +110,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent)
 // common part of all ctors
 void wxNotebook::Init()
 {
-  m_bOwnsImageList = FALSE;
   m_imageList = NULL;
   m_nSelection = -1;
 }
@@ -146,23 +145,22 @@ bool wxNotebook::Create(wxWindow *parent,
   if ( !CreateBase(parent, id, pos, size, style, wxDefaultValidator, name) )
       return FALSE;
 
-  // colors and font
-  m_backgroundColour = wxColour(GetSysColor(COLOR_BTNFACE));
-  m_foregroundColour = *wxBLACK;
+  parent->AddChild(this);
 
   // style
   m_windowStyle = style | wxTAB_TRAVERSAL;
 
-  long tabStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP | TCS_TABS;
+  long tabStyle = WS_TABSTOP | TCS_TABS;
 
+  if ( m_windowStyle & wxBORDER )
+    tabStyle |= WS_BORDER;
   if ( m_windowStyle & wxCLIP_SIBLINGS )
     tabStyle |= WS_CLIPSIBLINGS;
   if (m_windowStyle & wxCLIP_CHILDREN)
     tabStyle |= WS_CLIPCHILDREN;
+
   if ( m_windowStyle & wxTC_MULTILINE )
     tabStyle |= TCS_MULTILINE;
-  if ( m_windowStyle & wxBORDER )
-    tabStyle &= WS_BORDER;
   if (m_windowStyle & wxNB_FIXEDWIDTH)
     tabStyle |= TCS_FIXEDWIDTH ;
   if (m_windowStyle & wxNB_BOTTOM)
@@ -172,36 +170,22 @@ bool wxNotebook::Create(wxWindow *parent,
   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,
-                  tabStyle, NULL, 0) )
+  // note that we don't want to have the default WS_EX_CLIENTEDGE style for the
+  // notebook, so explicitly specify 0 as last parameter
+  if ( !MSWCreateControl(WC_TABCONTROL, tabStyle, pos, size, _T(""), 0) )
   {
     return FALSE;
   }
 
-  // Not all compilers recognise SetWindowFont
-  ::SendMessage(GetHwnd(), WM_SETFONT,
-                (WPARAM)::GetStockObject(DEFAULT_GUI_FONT), TRUE);
-
-
-  if ( parent != NULL )
-    parent->AddChild(this);
-
-  SubclassWin(m_hWnd);
+  SetBackgroundColour(wxColour(::GetSysColor(COLOR_BTNFACE)));
 
   return TRUE;
 }
 
-// dtor
-wxNotebook::~wxNotebook()
-{
-  if (m_bOwnsImageList) delete m_pImageList;
-}
-
 // ----------------------------------------------------------------------------
 // wxNotebook accessors
 // ----------------------------------------------------------------------------
+
 int wxNotebook::GetPageCount() const
 {
   // consistency check
@@ -275,21 +259,12 @@ bool wxNotebook::SetPageImage(int nPage, int nImage)
 
 void wxNotebook::SetImageList(wxImageList* imageList)
 {
-  if ( m_bOwnsImageList )
+  wxNotebookBase::SetImageList(imageList);
+
+  if ( imageList )
   {
-      delete m_imageList;
+    TabCtrl_SetImageList(m_hwnd, (HIMAGELIST)imageList->GetHIMAGELIST());
   }
-
-  m_bOwnsImageList = FALSE;
-  m_imageList = imageList;
-
-  TabCtrl_SetImageList(m_hwnd, (HIMAGELIST)imageList->GetHIMAGELIST());
-}
-
-void wxNotebook::AssignImageList(wxImageList* imageList)
-{
-  SetImageList(imageList);
-  m_bOwnsImageList = TRUE;
 }
 
 // ----------------------------------------------------------------------------
@@ -341,7 +316,7 @@ bool wxNotebook::DeletePage(int nPage)
   TabCtrl_DeleteItem(m_hwnd, nPage);
 
   delete m_pages[nPage];
-  m_pages.Remove(nPage);
+  m_pages.RemoveAt(nPage);
 
   if ( m_pages.IsEmpty() ) {
       // no selection if the notebook became empty
@@ -357,13 +332,12 @@ bool wxNotebook::DeletePage(int nPage)
 // remove one page from the notebook, without deleting
 wxNotebookPage *wxNotebook::DoRemovePage(int nPage)
 {
-  wxCHECK_MSG( IS_VALID_PAGE(nPage), NULL, wxT("notebook page out of range") );
+  wxNotebookPage *pageRemoved = wxNotebookBase::DoRemovePage(nPage);
+  if ( !pageRemoved )
+      return NULL;
 
   TabCtrl_DeleteItem(m_hwnd, nPage);
 
-  wxNotebookPage *pageRemoved = m_pages[nPage];
-  m_pages.Remove(nPage);
-
   if ( m_pages.IsEmpty() )
     m_nSelection = -1;
   else