- wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, id );
- event.SetEventObject( menu );
- event.SetInt(id );
-
- if (menu->m_callback)
- {
- (void) (*(menu->m_callback)) (*menu, event);
- return;
- }
+ wxMenuItem* item = menu->FindItem( id );
+ wxCHECK_RET( item, "error in menu item callback" );
+
+ if (item->m_isCheckMenu)
+ {
+ if (item->m_isChecked == item->IsChecked())
+ {
+ /* the menu item has been checked by calling wxMenuItem->Check() */
+ return;
+ }
+ else
+ {
+ /* the user pressed on the menu item -> report */
+ item->m_isChecked = item->IsChecked(); /* make consistent again */
+ }
+ }