WX_DEFINE_LIST( wxNotebookPageInfoList )
 
 BEGIN_EVENT_TABLE(wxNotebook, wxBookCtrlBase)
-    EVT_NOTEBOOK_PAGE_CHANGED(wxID_ANY, wxNotebook::OnSelChange)
     EVT_SIZE(wxNotebook::OnSize)
     EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey)
 
             // program allows the page change
             SendPageChangedEvent(m_selection, nPage);
 
+            UpdateSelection(nPage);
+
             TabCtrl_SetCurSel(GetHwnd(), nPage);
         }
     }
     event.Skip();
 }
 
-void wxNotebook::OnSelChange(wxBookCtrlEvent& event)
-{
-    // is it our tab control?
-    if ( event.GetEventObject() == this )
-    {
-        UpdateSelection(event.GetSelection());
-    }
-
-    // we want to give others a chance to process this message as well
-    event.Skip();
-}
-
 void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event)
 {
     if ( event.IsWindowChange() ) {
   event.SetInt(idCtrl);
 
   bool processed = HandleWindowEvent(event);
+  if ( hdr->code == TCN_SELCHANGE )
+      UpdateSelection(event.GetSelection());
+
   *result = !event.IsAllowed();
   return processed;
 }