diff options
author | Ted Gould <ted@gould.cx> | 2010-08-18 09:14:35 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-08-18 09:14:35 -0500 |
commit | 607107ea135b2579c30a9efff08c626538892045 (patch) | |
tree | 5c67f18f5e22936eb4aca91508746380a5a13b79 | |
parent | 939c18d85dde7bdd5340c853c1f334b809fc65d1 (diff) | |
download | libdbusmenu-607107ea135b2579c30a9efff08c626538892045.tar.gz libdbusmenu-607107ea135b2579c30a9efff08c626538892045.tar.bz2 libdbusmenu-607107ea135b2579c30a9efff08c626538892045.zip |
Activate the mnemonic when requested by the server
-rw-r--r-- | libdbusmenu-gtk/client.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index e7761fb..da81544 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -439,6 +439,22 @@ new_menuitem (DbusmenuClient * client, DbusmenuMenuitem * mi, gpointer userdata) static void item_activate (DbusmenuClient * client, DbusmenuMenuitem * mi, guint timestamp, gpointer userdata) { + gpointer pmenu = g_object_get_data(G_OBJECT(mi), data_menu); + if (pmenu == NULL) { + g_warning("Activated menu item doesn't have a menu? ID: %d", dbusmenu_menuitem_get_id(mi)); + return; + } + + GtkWidget * parent = gtk_widget_get_parent(GTK_WIDGET(pmenu)); + if (parent == NULL) { + g_warning("Activated menu item's menu doesn't have a parent? ID: %d", dbusmenu_menuitem_get_id(mi)); + return; + } + + if (!gtk_widget_mnemonic_activate(parent, FALSE)) { + g_warning("Unable to activate item: %d", dbusmenu_menuitem_get_id(mi)); + return; + } return; } |