return popupMenu->MSWCommand(cmd, id);
}
- // must cast to a signed type before comparing with other ids!
- wxWindow *win = FindItem((signed short)id);
- if ( !win )
+ wxWindow *win;
+ if ( cmd == 0 || cmd == 1 ) // menu or accel - use id
{
+ // must cast to a signed type before comparing with other ids!
+ win = FindItem((signed short)id);
+ }
+ else
+ {
+ // find it from HWND - this works even with the broken programs using
+ // the same ids for different controls
win = wxFindWinFromHandle(control);
}
if ( win )
return win->MSWCommand(cmd, id);
+ else
+ {
+ // If no child window, it may be an accelerator, e.g. for
+ // a popup menu command.
+
+ wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED);
+ event.SetEventObject(this);
+ event.SetId(id);
+ event.SetInt(id);
+ return ProcessEvent(event);
+ }
return FALSE;
}
event.m_eventType = wxEVT_SCROLLWIN_PAGEDOWN;
break;
- case SB_THUMBTRACK:
case SB_THUMBPOSITION:
+ event.m_isScrolling = FALSE;
+ /* fall-through */
+
+ case SB_THUMBTRACK:
event.m_eventType = wxEVT_SCROLLWIN_THUMBTRACK;
break;