+ if ( m_pages.IsEmpty() )
+ {
+ // no selection any more, the notebook becamse empty
+ m_nSelection = -1;
+ }
+ else // notebook still not empty
+ {
+ // change the selected page if it was deleted or became invalid
+ int selNew;
+ if ( m_nSelection == GetPageCount() )
+ {
+ // last page deleted, make the new last page the new selection
+ selNew = m_nSelection - 1;
+ }
+ 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
+ m_pages[m_nSelection]->Refresh();
+ }
+
+ if ( selNew != -1 )
+ {
+ // m_nSelection must be always valid so reset it before calling
+ // SetSelection()
+ m_nSelection = -1;
+ SetSelection(selNew);
+ }
+ }