aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-gtk/client.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-08-18 09:14:35 -0500
committerTed Gould <ted@gould.cx>2010-08-18 09:14:35 -0500
commit607107ea135b2579c30a9efff08c626538892045 (patch)
tree5c67f18f5e22936eb4aca91508746380a5a13b79 /libdbusmenu-gtk/client.c
parent939c18d85dde7bdd5340c853c1f334b809fc65d1 (diff)
downloadlibdbusmenu-607107ea135b2579c30a9efff08c626538892045.tar.gz
libdbusmenu-607107ea135b2579c30a9efff08c626538892045.tar.bz2
libdbusmenu-607107ea135b2579c30a9efff08c626538892045.zip
Activate the mnemonic when requested by the server
Diffstat (limited to 'libdbusmenu-gtk/client.c')
-rw-r--r--libdbusmenu-gtk/client.c16
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;
}