wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED handler should see the new page selected
in the control, not the old one as was the case if the page was changed using
the mouse in wxMSW.
This should have been done together with the other changes of r66224, see its
commit message for more details.
Closes 13145.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67589
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
nameControl,
veto;
const wxEventType eventType = event.GetEventType();
nameControl,
veto;
const wxEventType eventType = event.GetEventType();
+
+ // NB: can't use wxStaticCast here as wxBookCtrlBase is not in
+ // wxRTTI
+ const wxBookCtrlBase * const
+ book = static_cast<wxBookCtrlBase *>(event.GetEventObject());
+
for ( size_t n = 0; n < WXSIZEOF(events); n++ )
{
const EventInfo& ei = events[n];
for ( size_t n = 0; n < WXSIZEOF(events); n++ )
{
const EventInfo& ei = events[n];
{
const int idx = event.GetOldSelection();
{
const int idx = event.GetOldSelection();
- // NB: can't use wxStaticCast here as wxBookCtrlBase is not in
- // wxRTTI
- const wxBookCtrlBase * const
- book = static_cast<wxBookCtrlBase *>(event.GetEventObject());
if ( idx != wxNOT_FOUND &&
book && book->GetPageText(idx) == VETO_PAGE_NAME )
{
if ( idx != wxNOT_FOUND &&
book && book->GetPageText(idx) == VETO_PAGE_NAME )
{
- wxLogMessage(wxT("Event #%d: %s: %s (%d) new sel %d, old %d%s"),
+ wxLogMessage(wxT("Event #%d: %s: %s (%d) new sel %d, old %d, current %d%s"),
++s_num,
nameControl.c_str(),
nameEvent.c_str(),
eventType,
event.GetSelection(),
event.GetOldSelection(),
++s_num,
nameControl.c_str(),
nameEvent.c_str(),
eventType,
event.GetSelection(),
event.GetOldSelection(),
veto.c_str());
#if USE_LOG
veto.c_str());
#if USE_LOG
event.SetEventObject(this);
event.SetInt(idCtrl);
event.SetEventObject(this);
event.SetInt(idCtrl);
- bool processed = HandleWindowEvent(event);
+ // Change the selection before generating the event as its handler should
+ // already see the new page selected.
if ( hdr->code == TCN_SELCHANGE )
UpdateSelection(event.GetSelection());
if ( hdr->code == TCN_SELCHANGE )
UpdateSelection(event.GetSelection());
+ bool processed = HandleWindowEvent(event);
*result = !event.IsAllowed();
return processed;
}
*result = !event.IsAllowed();
return processed;
}