}
//-----------------------------------------------------------------------------
-// wxMenu
+// "activate"
//-----------------------------------------------------------------------------
static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
if (!menu->IsEnabled(id)) return;
- wxCommandEvent event( wxEVENT_TYPE_MENU_COMMAND, id );
+ wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, id );
+ event.SetEventObject( menu );
+ event.SetInt(id );
+
+ if (menu->m_callback)
+ {
+ (void) (*(menu->m_callback)) (*menu, event);
+ return;
+ }
+
+ if (menu->GetEventHandler()->ProcessEvent(event)) return;
+
+ wxWindow *win = menu->GetInvokingWindow();
+ if (win) win->GetEventHandler()->ProcessEvent( event );
+}
+
+//-----------------------------------------------------------------------------
+// "select"
+//-----------------------------------------------------------------------------
+
+static void gtk_menu_hilight_callback( GtkWidget *widget, wxMenu *menu )
+{
+ int id = menu->FindMenuIdByMenuItem(widget);
+
+ wxASSERT( id != -1 ); // should find it!
+
+ if (!menu->IsEnabled(id)) return;
+
+ wxCommandEvent event( wxEVT_MENU_HIGHLIGHT, id );
event.SetEventObject( menu );
event.SetInt(id );
+/* wxMSW doesn't call callback here either
if (menu->m_callback)
{
(void) (*(menu->m_callback)) (*menu, event);
return;
}
+*/
if (menu->GetEventHandler()->ProcessEvent(event)) return;
if (win) win->GetEventHandler()->ProcessEvent( event );
}
+//-----------------------------------------------------------------------------
+// wxMenu
+//-----------------------------------------------------------------------------
+
IMPLEMENT_DYNAMIC_CLASS(wxMenuItem,wxObject)
wxMenuItem::wxMenuItem()
GTK_SIGNAL_FUNC(gtk_menu_clicked_callback),
(gpointer*)this );
+ gtk_signal_connect( GTK_OBJECT(menuItem), "select",
+ GTK_SIGNAL_FUNC(gtk_menu_hilight_callback),
+ (gpointer*)this );
+
gtk_menu_append( GTK_MENU(m_menu), menuItem );
gtk_widget_show( menuItem );
m_items.Append( mitem );