git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41746
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
return DoGetSizeFromClientSize( sizePage );
}
return DoGetSizeFromClientSize( sizePage );
}
-int wxNotebook::DoSetSelection(size_t nPage, int flags = 0)
+int wxNotebook::DoSetSelection(size_t nPage, int flags)
{
wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("DoSetSelection: invalid notebook page") );
{
wxCHECK_MSG( IS_VALID_PAGE(nPage), wxNOT_FOUND, wxT("DoSetSelection: invalid notebook page") );
- if ( int(nPage) != m_nSelection )
+ if ( m_nSelection != wxNOT_FOUND && nPage != (size_t)m_nSelection )
- if (flags & SetSelection_SendEvent)
+ if ( flags & SetSelection_SendEvent )
{
wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId);
event.SetSelection(nPage);
event.SetOldSelection(m_nSelection);
event.SetEventObject(this);
{
wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId);
event.SetSelection(nPage);
event.SetOldSelection(m_nSelection);
event.SetEventObject(this);
- if ( !GetEventHandler()->ProcessEvent(event) || event.IsAllowed() )
+ if ( GetEventHandler()->ProcessEvent(event) && !event.IsAllowed() )
- // program allows the page change
- event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED);
- (void)GetEventHandler()->ProcessEvent(event);
-
- ChangePage(m_nSelection, nPage);
+ // vetoed by program
+ return m_nSelection;
+ //else: program allows the page change
+
+ event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED);
+ (void)GetEventHandler()->ProcessEvent(event);
+ ChangePage(m_nSelection, nPage);
+ }
+
- else
- {
- ChangePage(m_nSelection, nPage);
- }
- }