diff options
author | Cody Russell <crussell@canonical.com> | 2010-06-22 11:03:42 -0500 |
---|---|---|
committer | Cody Russell <crussell@canonical.com> | 2010-06-22 11:03:42 -0500 |
commit | 2872698e6eb9bfab4d56f5d98fd8f9494738a398 (patch) | |
tree | ef6366f748338f562ff59857096286a9adb084a5 /libdbusmenu-gtk/menuitem.c | |
parent | 424ab1c0d64300c065c3f19e1b5fae222f8828e9 (diff) | |
download | libdbusmenu-2872698e6eb9bfab4d56f5d98fd8f9494738a398.tar.gz libdbusmenu-2872698e6eb9bfab4d56f5d98fd8f9494738a398.tar.bz2 libdbusmenu-2872698e6eb9bfab4d56f5d98fd8f9494738a398.zip |
Fix setting shortcuts from GtkMenuItem
Diffstat (limited to 'libdbusmenu-gtk/menuitem.c')
-rw-r--r-- | libdbusmenu-gtk/menuitem.c | 22 |
1 files changed, 13 insertions, 9 deletions
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); } |