diff options
author | Ted Gould <ted@gould.cx> | 2010-06-22 11:10:13 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-06-22 11:10:13 -0500 |
commit | 4a755f012fbd4fa6050901ac6d8402b35c26985b (patch) | |
tree | 5b979adf8989866f86bbdca90f5f8cc9aa3cbaea | |
parent | 54a71efb279fc779efed817098ae9ef2677db2d4 (diff) | |
parent | 2872698e6eb9bfab4d56f5d98fd8f9494738a398 (diff) | |
download | libdbusmenu-4a755f012fbd4fa6050901ac6d8402b35c26985b.tar.gz libdbusmenu-4a755f012fbd4fa6050901ac6d8402b35c26985b.tar.bz2 libdbusmenu-4a755f012fbd4fa6050901ac6d8402b35c26985b.zip |
Fixing the getting accel from a menu item.
-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); } |