}
//-----------------------------------------------------------------------------
-// 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()
void wxMenuItem::Check( bool check )
{
- wxCHECK_RET( IsCheckable(), _("Can't check uncheckable item!") )
+ wxCHECK_RET( IsCheckable(), "Can't check uncheckable item!" )
m_isChecked = check;
gtk_check_menu_item_set_state( (GtkCheckMenuItem*)m_menuItem, (gint)check );
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 );
node = node->Next();
}
- wxLogDebug(_("wxMenu::FindItem: item %d not found."), id);
+ wxLogDebug( "wxMenu::FindItem: item %d not found.", id);
return (wxMenuItem *) NULL;
}