From 95ecb480de8da2e06b07be2313537093bb47069a Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Mon, 7 Dec 2009 13:31:36 -0600 Subject: Add 'activate' signal support --- example/simple-client.c | 14 ++++++++++++++ src/libappindicator/app-indicator.c | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/example/simple-client.c b/example/simple-client.c index ab2e24d..ea4da9d 100644 --- a/example/simple-client.c +++ b/example/simple-client.c @@ -26,6 +26,14 @@ with this program. If not, see . GMainLoop * mainloop = NULL; +static void +item_clicked_cb (GtkWidget *widget, gpointer data) +{ + const gchar *text = (const gchar *)data; + + g_print ("%s clicked!\n", text); +} + int main (int argc, char ** argv) { @@ -46,12 +54,18 @@ main (int argc, char ** argv) menu = gtk_menu_new (); GtkWidget *item = gtk_menu_item_new_with_label ("1"); + g_signal_connect (item, "activate", + G_CALLBACK (item_clicked_cb), "1"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("2"); + g_signal_connect (item, "activate", + G_CALLBACK (item_clicked_cb), "2"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); item = gtk_menu_item_new_with_label ("3"); + g_signal_connect (item, "activate", + G_CALLBACK (item_clicked_cb), "3"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); app_indicator_set_menu (ci, GTK_MENU (menu)); diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c index f61723d..bd72499 100644 --- a/src/libappindicator/app-indicator.c +++ b/src/libappindicator/app-indicator.c @@ -632,6 +632,14 @@ app_indicator_set_icon (AppIndicator *self, const gchar *icon_name) } } +static void +activate_menuitem (DbusmenuMenuitem *mi, gpointer user_data) +{ + GtkWidget *widget = (GtkWidget *)user_data; + + gtk_menu_item_activate (GTK_MENU_ITEM (widget)); +} + static void container_iterate (GtkWidget *widget, gpointer data) @@ -643,6 +651,9 @@ container_iterate (GtkWidget *widget, dbusmenu_menuitem_property_set (child, DBUSMENU_MENUITEM_PROP_LABEL, gtk_menu_item_get_label (GTK_MENU_ITEM (widget))); + g_signal_connect (G_OBJECT(child), + DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, + G_CALLBACK (activate_menuitem), widget); dbusmenu_menuitem_child_append (root, child); } -- cgit v1.2.3