int wxBookCtrlBase::DoSetSelection(size_t n, int flags) { wxCHECK_MSG( n < GetPageCount(), wxNOT_FOUND, wxT("invalid page index in wxBookCtrlBase::DoSetSelection()") ); const int oldSel = GetSelection(); if ( n != (size_t)oldSel ) { wxBookCtrlEvent *event = CreatePageChangingEvent(); bool allowed = false; if ( flags & SetSelection_SendEvent ) { event->SetSelection(n); event->SetOldSelection(oldSel); event->SetEventObject(this); allowed = !GetEventHandler()->ProcessEvent(*event) || event->IsAllowed(); } if ( !(flags & SetSelection_SendEvent) || allowed) { if ( oldSel != wxNOT_FOUND ) m_pages[oldSel]->Hide(); wxWindow *page = m_pages[n]; page->SetSize(GetPageRect()); page->Show(); // change selection now to ignore the selection change event UpdateSelectedPage(n); if ( flags & SetSelection_SendEvent ) { // program allows the page change MakeChangedEvent(*event); (void)GetEventHandler()->ProcessEvent(*event); } } delete event; } return oldSel; }
int wxBookCtrlBase::DoSetSelection(size_t n, int flags) { wxCHECK_MSG( n < GetPageCount(), wxNOT_FOUND, wxT("invalid page index in wxBookCtrlBase::DoSetSelection()") ); const int oldSel = GetSelection(); if ( n != (size_t)oldSel ) { wxBookCtrlEvent *event = CreatePageChangingEvent(); bool allowed = true; if ( flags & SetSelection_SendEvent ) { event->SetSelection(n); event->SetOldSelection(oldSel); event->SetEventObject(this); allowed = !GetEventHandler()->ProcessEvent(*event) || event->IsAllowed(); } if ( allowed ) { if ( oldSel != wxNOT_FOUND ) { if ( wxWindow* const oldPage = TryGetNonNullPage(oldSel) ) { DoShowPage(oldPage, false); } } if ( wxWindow* const page = TryGetNonNullPage(n) ) { page->SetSize(GetPageRect()); DoShowPage(page, true); } // change selection now to ignore the selection change event m_selection = n; UpdateSelectedPage(n); if ( flags & SetSelection_SendEvent ) { // program allows the page change MakeChangedEvent(*event); (void)GetEventHandler()->ProcessEvent(*event); } } else { // Selection in the control might have already had changed. if ( oldSel != wxNOT_FOUND ) { m_selection = oldSel; UpdateSelectedPage(oldSel); } } delete event; } return oldSel; }