protected:
// remove the page and return a pointer to it
- virtual wxNotebookPage *DoRemovePage(int page) = 0;
+ virtual wxNotebookPage *DoRemovePage(int page);
// common part of all ctors
void Init();
return TRUE;
}
+wxNotebookPage *wxNotebookBase::DoRemovePage(int nPage)
+{
+ wxCHECK_MSG( nPage >= 0 && (size_t)nPage < m_pages.GetCount(), NULL,
+ _T("invalid page index in wxNotebookBase::DoRemovePage()") );
+
+ wxNotebookPage *pageRemoved = m_pages[nPage];
+ m_pages.Remove(nPage);
+
+ return pageRemoved;
+}
+
int wxNotebookBase::GetNextPage(bool forward) const
{
int nPage;
wxASSERT_MSG( GetPageCount() == 0, _T("all pages must have been deleted") );
- return TRUE;
+ return wxNotebookBase::DeleteAllPages();
}
bool wxNotebook::DeletePage( int page )
{
- wxGtkNotebookPage* nb_page = GetNotebookPage(page);
- wxCHECK_MSG( nb_page, FALSE, _T("invalid page in wxNotebook::DeletePage") );
-
// GTK sets GtkNotebook.cur_page to NULL before sending the switch page
// event so we have to store the selection internally
if ( m_selection == -1 )
}
}
- m_pagesData.DeleteObject( nb_page );
-
+ // it will call our DoRemovePage() to do the real work
return wxNotebookBase::DeletePage(page);
}
wxNotebookPage *wxNotebook::DoRemovePage( int page )
{
- wxGtkNotebookPage* nb_page = GetNotebookPage(page);
-
- wxCHECK_MSG( nb_page, NULL, _T("wxNotebook::RemovePage: invalid page") );
+ wxNotebookPage *client = wxNotebookBase::DoRemovePage(page);
+ if ( !client )
+ return NULL;
- wxNotebookPage *client = GetPage(page);
gtk_widget_ref( client->m_widget );
gtk_widget_unrealize( client->m_widget );
gtk_widget_unparent( client->m_widget );
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page );
- m_pagesData.DeleteObject( nb_page );
+ m_pagesData.DeleteObject(GetNotebookPage(page));
return client;
}
wxASSERT_MSG( GetPageCount() == 0, _T("all pages must have been deleted") );
- return TRUE;
+ return wxNotebookBase::DeleteAllPages();
}
bool wxNotebook::DeletePage( int page )
{
- wxGtkNotebookPage* nb_page = GetNotebookPage(page);
- wxCHECK_MSG( nb_page, FALSE, _T("invalid page in wxNotebook::DeletePage") );
-
// GTK sets GtkNotebook.cur_page to NULL before sending the switch page
// event so we have to store the selection internally
if ( m_selection == -1 )
}
}
- m_pagesData.DeleteObject( nb_page );
-
+ // it will call our DoRemovePage() to do the real work
return wxNotebookBase::DeletePage(page);
}
wxNotebookPage *wxNotebook::DoRemovePage( int page )
{
- wxGtkNotebookPage* nb_page = GetNotebookPage(page);
-
- wxCHECK_MSG( nb_page, NULL, _T("wxNotebook::RemovePage: invalid page") );
+ wxNotebookPage *client = wxNotebookBase::DoRemovePage(page);
+ if ( !client )
+ return NULL;
- wxNotebookPage *client = GetPage(page);
gtk_widget_ref( client->m_widget );
gtk_widget_unrealize( client->m_widget );
gtk_widget_unparent( client->m_widget );
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page );
- m_pagesData.DeleteObject( nb_page );
+ m_pagesData.DeleteObject(GetNotebookPage(page));
return client;
}
// 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