From 2872698e6eb9bfab4d56f5d98fd8f9494738a398 Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Tue, 22 Jun 2010 11:03:42 -0500 Subject: Fix setting shortcuts from GtkMenuItem --- libdbusmenu-gtk/menuitem.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'libdbusmenu-gtk/menuitem.c') diff --git a/libdbusmenu-gtk/menuitem.c b/libdbusmenu-gtk/menuitem.c index a448f88..57cd258 100644 --- a/libdbusmenu-gtk/menuitem.c +++ b/libdbusmenu-gtk/menuitem.c @@ -246,19 +246,20 @@ dbusmenu_menuitem_property_set_shortcut_menuitem (DbusmenuMenuitem * menuitem, c g_return_val_if_fail(GTK_IS_MENU_ITEM(gmi), FALSE); GClosure * closure = NULL; - GList * clist; + GtkWidget *label = GTK_BIN (gmi)->child; - clist = gtk_widget_list_accel_closures(GTK_WIDGET(gmi)); - if (clist == NULL) { - g_warning("Menuitem does not have any closures."); - return FALSE; - } + if (GTK_IS_ACCEL_LABEL (label)) + { + g_object_get (label, + "accel-closure", &closure, + NULL); + } - closure = (GClosure *)clist->data; - g_list_free(clist); + if (closure == NULL) + return FALSE; GtkAccelGroup * group = gtk_accel_group_from_accel_closure(closure); - + /* Seriously, if this returns NULL something is seriously wrong in GTK. */ g_return_val_if_fail(group != NULL, FALSE); @@ -267,6 +268,9 @@ dbusmenu_menuitem_property_set_shortcut_menuitem (DbusmenuMenuitem * menuitem, c /* Again, not much we can do except complain loudly. */ g_return_val_if_fail(key != NULL, FALSE); + if (!gtk_accelerator_valid (key->accel_key, key->accel_mods)) + return FALSE; + return dbusmenu_menuitem_property_set_shortcut(menuitem, key->accel_key, key->accel_mods); } -- cgit v1.2.3