fixed deleting pages from the notebook
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10794 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -155,7 +155,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
// remove the page and return a pointer to it
|
// 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
|
// common part of all ctors
|
||||||
void Init();
|
void Init();
|
||||||
|
@@ -113,6 +113,17 @@ bool wxNotebookBase::DeletePage(int nPage)
|
|||||||
return TRUE;
|
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 wxNotebookBase::GetNextPage(bool forward) const
|
||||||
{
|
{
|
||||||
int nPage;
|
int nPage;
|
||||||
|
@@ -522,14 +522,11 @@ bool wxNotebook::DeleteAllPages()
|
|||||||
|
|
||||||
wxASSERT_MSG( GetPageCount() == 0, _T("all pages must have been deleted") );
|
wxASSERT_MSG( GetPageCount() == 0, _T("all pages must have been deleted") );
|
||||||
|
|
||||||
return TRUE;
|
return wxNotebookBase::DeleteAllPages();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxNotebook::DeletePage( int page )
|
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
|
// GTK sets GtkNotebook.cur_page to NULL before sending the switch page
|
||||||
// event so we have to store the selection internally
|
// event so we have to store the selection internally
|
||||||
if ( m_selection == -1 )
|
if ( m_selection == -1 )
|
||||||
@@ -542,25 +539,23 @@ bool wxNotebook::DeletePage( int page )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pagesData.DeleteObject( nb_page );
|
// it will call our DoRemovePage() to do the real work
|
||||||
|
|
||||||
return wxNotebookBase::DeletePage(page);
|
return wxNotebookBase::DeletePage(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxNotebookPage *wxNotebook::DoRemovePage( int page )
|
wxNotebookPage *wxNotebook::DoRemovePage( int page )
|
||||||
{
|
{
|
||||||
wxGtkNotebookPage* nb_page = GetNotebookPage(page);
|
wxNotebookPage *client = wxNotebookBase::DoRemovePage(page);
|
||||||
|
if ( !client )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
wxCHECK_MSG( nb_page, NULL, _T("wxNotebook::RemovePage: invalid page") );
|
|
||||||
|
|
||||||
wxNotebookPage *client = GetPage(page);
|
|
||||||
gtk_widget_ref( client->m_widget );
|
gtk_widget_ref( client->m_widget );
|
||||||
gtk_widget_unrealize( client->m_widget );
|
gtk_widget_unrealize( client->m_widget );
|
||||||
gtk_widget_unparent( client->m_widget );
|
gtk_widget_unparent( client->m_widget );
|
||||||
|
|
||||||
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page );
|
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page );
|
||||||
|
|
||||||
m_pagesData.DeleteObject( nb_page );
|
m_pagesData.DeleteObject(GetNotebookPage(page));
|
||||||
|
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
@@ -522,14 +522,11 @@ bool wxNotebook::DeleteAllPages()
|
|||||||
|
|
||||||
wxASSERT_MSG( GetPageCount() == 0, _T("all pages must have been deleted") );
|
wxASSERT_MSG( GetPageCount() == 0, _T("all pages must have been deleted") );
|
||||||
|
|
||||||
return TRUE;
|
return wxNotebookBase::DeleteAllPages();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxNotebook::DeletePage( int page )
|
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
|
// GTK sets GtkNotebook.cur_page to NULL before sending the switch page
|
||||||
// event so we have to store the selection internally
|
// event so we have to store the selection internally
|
||||||
if ( m_selection == -1 )
|
if ( m_selection == -1 )
|
||||||
@@ -542,25 +539,23 @@ bool wxNotebook::DeletePage( int page )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pagesData.DeleteObject( nb_page );
|
// it will call our DoRemovePage() to do the real work
|
||||||
|
|
||||||
return wxNotebookBase::DeletePage(page);
|
return wxNotebookBase::DeletePage(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxNotebookPage *wxNotebook::DoRemovePage( int page )
|
wxNotebookPage *wxNotebook::DoRemovePage( int page )
|
||||||
{
|
{
|
||||||
wxGtkNotebookPage* nb_page = GetNotebookPage(page);
|
wxNotebookPage *client = wxNotebookBase::DoRemovePage(page);
|
||||||
|
if ( !client )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
wxCHECK_MSG( nb_page, NULL, _T("wxNotebook::RemovePage: invalid page") );
|
|
||||||
|
|
||||||
wxNotebookPage *client = GetPage(page);
|
|
||||||
gtk_widget_ref( client->m_widget );
|
gtk_widget_ref( client->m_widget );
|
||||||
gtk_widget_unrealize( client->m_widget );
|
gtk_widget_unrealize( client->m_widget );
|
||||||
gtk_widget_unparent( client->m_widget );
|
gtk_widget_unparent( client->m_widget );
|
||||||
|
|
||||||
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page );
|
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page );
|
||||||
|
|
||||||
m_pagesData.DeleteObject( nb_page );
|
m_pagesData.DeleteObject(GetNotebookPage(page));
|
||||||
|
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
@@ -342,13 +342,12 @@ bool wxNotebook::DeletePage(int nPage)
|
|||||||
// remove one page from the notebook, without deleting
|
// remove one page from the notebook, without deleting
|
||||||
wxNotebookPage *wxNotebook::DoRemovePage(int nPage)
|
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);
|
TabCtrl_DeleteItem(m_hwnd, nPage);
|
||||||
|
|
||||||
wxNotebookPage *pageRemoved = m_pages[nPage];
|
|
||||||
m_pages.Remove(nPage);
|
|
||||||
|
|
||||||
if ( m_pages.IsEmpty() )
|
if ( m_pages.IsEmpty() )
|
||||||
m_nSelection = -1;
|
m_nSelection = -1;
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user