void wxSTEditorNotebook::OnPageChanged(wxNotebookEvent &event) { // this is our fake event to ensure selection is correct if (event.GetString() == wxT("wxSTEditorNotebook Page Change")) { SetSelection(event.GetExtraLong()); // FIXME no Clone in wxNotebookEvent return; } wxSTERecursionGuard guard(m_rGuard_UpdatePageState); bool update_page_state = !guard.IsInside(); #if defined(__WXMSW__) && (wxVERSION_NUMBER < 2902) // OnSelChange() removed in trunk // let the msw notebook really change the page first wxNotebook::OnSelChange(event); event.Skip(false); #else // trac.wxwidgets.org/ticket/12688, fixed now event.Skip(); #endif int sel = event.GetSelection(); // NOTE: GTK selection can get out of sync, we "fix" it in GetEditorSplitter //if (sel >= wxNotebook::GetPageCount()) // sel = wxNotebook::GetPageCount()-1; // make sure the cursor is shown by setting the STC focus if ((sel >= 0) && GetEditor(sel)) { GetEditor(sel)->SetSTCFocus(true); GetEditor(sel)->SetFocus(); } if (update_page_state) UpdatePageState(); }