+void wxNotebook::UpdateSelection(int selNew)
+{
+ if ( m_nSelection != wxNOT_FOUND )
+ m_pages[m_nSelection]->Show(false);
+
+ if ( selNew != wxNOT_FOUND )
+ {
+ wxNotebookPage *pPage = m_pages[selNew];
+ pPage->Show(true);
+ }
+
+ // Changing the page should give the focus to it but, as per bug report
+ // http://sf.net/tracker/index.php?func=detail&aid=1150659&group_id=9863&atid=109863,
+ // we should not set the focus to it directly since it erroneously
+ // selects radio buttons and breaks keyboard handling for a notebook's
+ // scroll buttons. So give focus to the notebook and not the page.
+
+ // but don't do this is the notebook is hidden
+ if ( ::IsWindowVisible(GetHwnd()) )
+ SetFocus();
+
+ m_nSelection = selNew;
+}
+
+int wxNotebook::ChangeSelection(size_t nPage)
+{
+ wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("notebook page out of range") );
+
+ const int selOld = m_nSelection;
+
+ if ( m_nSelection == wxNOT_FOUND || nPage != (size_t)m_nSelection )
+ {
+ TabCtrl_SetCurSel(GetHwnd(), nPage);
+
+ UpdateSelection(nPage);
+ }
+
+ return selOld;
+}
+