Applied patch [ 843287 ] wxNotebook remove page problems

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@24763 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2003-12-11 11:18:42 +00:00
parent 2f9c830f80
commit 04afd7753e

View File

@@ -366,37 +366,35 @@ wxNotebookPage *wxNotebook::DoRemovePage(int nPage)
}
else // notebook still not empty
{
// change the selected page if it was deleted or became invalid
int selNew;
if ( m_nSelection == GetPageCount() )
int selNew = TabCtrl_GetCurSel(m_hwnd);
if (selNew != -1)
{
// last page deleted, make the new last page the new selection
selNew = m_nSelection - 1;
// No selection change, just refresh the current selection.
// Because it could be that the slection index changed
// we need to update it.
// Note: this does not mean the selection it self changed.
m_nSelection = selNew;
m_pages[m_nSelection]->Refresh();
}
else if ( nPage <= m_nSelection )
{
// we must show another page, even if it has the same index
selNew = m_nSelection;
}
else // nothing changes for the currently selected page
{
selNew = -1;
// we still must refresh the current page: this needs to be done
// for some unknown reason if the tab control shows the up-down
// control (i.e. when there are too many pages) -- otherwise after
// deleting a page nothing at all is shown
if (m_nSelection >= 0)
m_pages[m_nSelection]->Refresh();
}
if ( selNew != -1 )
else if (int(nPage) == m_nSelection)
{
// The selection was deleted.
// Determine new selection.
if (m_nSelection == int(GetPageCount()))
selNew = m_nSelection - 1;
else
selNew = m_nSelection;
// m_nSelection must be always valid so reset it before calling
// SetSelection()
m_nSelection = -1;
SetSelection(selNew);
}
else
{
wxFAIL; // Windows did not behave ok.
}
}
return pageRemoved;