- wxNotebookEvent eventChanged( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
- notebook->GetId(), page, old );
- eventChanged.SetEventObject( notebook );
- notebook->GetEventHandler()->ProcessEvent( eventChanged );
+ if ( (notebook->GetEventHandler()->ProcessEvent(eventChanging)) &&
+ !eventChanging.IsAllowed() )
+ {
+ /* program doesn't allow the page change */
+ g_signal_stop_emission_by_name (notebook->m_widget,
+ "switch_page");
+ }
+ else // change allowed
+ {
+ // make wxNotebook::GetSelection() return the correct (i.e. consistent
+ // with wxNotebookEvent::GetSelection()) value even though the page is
+ // not really changed in GTK+
+ notebook->m_selection = page;
+
+ wxNotebookEvent eventChanged( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
+ notebook->GetId(), page, old );
+ eventChanged.SetEventObject( notebook );
+ notebook->GetEventHandler()->ProcessEvent( eventChanged );
+ }