ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #01689
[Merge] lp:~bratsche/dbusmenu/fix-shortcut-from-gtkmenuitem into lp:dbusmenu
Cody Russell has proposed merging lp:~bratsche/dbusmenu/fix-shortcut-from-gtkmenuitem into lp:dbusmenu.
Requested reviews:
DBus Menu Team (dbusmenu-team)
Related bugs:
#591293 Add support for keyboard shortcuts in menus
https://bugs.launchpad.net/bugs/591293
--
https://code.launchpad.net/~bratsche/dbusmenu/fix-shortcut-from-gtkmenuitem/+merge/28204
Your team ayatana-commits is subscribed to branch lp:dbusmenu.
=== modified file 'libdbusmenu-gtk/menuitem.c'
--- libdbusmenu-gtk/menuitem.c 2010-06-15 04:48:51 +0000
+++ libdbusmenu-gtk/menuitem.c 2010-06-22 16:06:26 +0000
@@ -246,19 +246,20 @@
g_return_val_if_fail(GTK_IS_MENU_ITEM(gmi), FALSE);
GClosure * closure = NULL;
- GList * clist;
-
- clist = gtk_widget_list_accel_closures(GTK_WIDGET(gmi));
- if (clist == NULL) {
- g_warning("Menuitem does not have any closures.");
- return FALSE;
- }
-
- closure = (GClosure *)clist->data;
- g_list_free(clist);
+ GtkWidget *label = GTK_BIN (gmi)->child;
+
+ if (GTK_IS_ACCEL_LABEL (label))
+ {
+ g_object_get (label,
+ "accel-closure", &closure,
+ NULL);
+ }
+
+ 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 @@
/* 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);
}
Follow ups