ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #02917
[Merge] lp:~mterry/dbusmenu/fix-props-return into lp:dbusmenu
Michael Terry has proposed merging lp:~mterry/dbusmenu/fix-props-return into lp:dbusmenu.
Requested reviews:
DBus Menu Team (dbusmenu-team)
For more details, see:
https://code.launchpad.net/~mterry/dbusmenu/fix-props-return/+merge/48014
Seems like the variant type signature is wrong in this one case. (noticed in nm-applet output)
--
https://code.launchpad.net/~mterry/dbusmenu/fix-props-return/+merge/48014
Your team ayatana-commits is subscribed to branch lp:dbusmenu.
=== modified file 'libdbusmenu-glib/server.c'
--- libdbusmenu-glib/server.c 2011-01-26 17:12:04 +0000
+++ libdbusmenu-glib/server.c 2011-01-31 16:02:54 +0000
@@ -946,9 +946,9 @@
ret = g_variant_builder_end(&builder);
} else {
GError * error = NULL;
- ret = g_variant_parse(g_variant_type_new("a(ia(sv))"), "[]", NULL, NULL, NULL);
+ ret = g_variant_parse(g_variant_type_new("a(ia{sv})"), "[]", NULL, NULL, NULL);
if (error != NULL) {
- g_warning("Unable to parse '[]' as a 'a(ia(sv))': %s", error->message);
+ g_warning("Unable to parse '[]' as a 'a(ia{sv})': %s", error->message);
g_error_free(error);
ret = NULL;
}
=== modified file 'libdbusmenu-gtk/parser.c'
--- libdbusmenu-gtk/parser.c 2011-01-27 19:54:18 +0000
+++ libdbusmenu-gtk/parser.c 2011-01-31 16:02:54 +0000
@@ -649,6 +649,27 @@
}
}
}
+ else if (pspec->name == g_intern_static_string ("submenu"))
+ {
+ /* The underlying submenu got swapped out. Let's see what it is now. */
+ /* First, delete any children that may exist currently. */
+ DbusmenuMenuitem * item = DBUSMENU_MENUITEM(g_object_get_data(G_OBJECT(widget), CACHED_MENUITEM));
+ if (item != NULL)
+ {
+ GList * children = dbusmenu_menuitem_get_children (item);
+ while (children != NULL) {
+ dbusmenu_menuitem_child_delete (item, DBUSMENU_MENUITEM(children->data));
+ children = children->next;
+ }
+ }
+
+ /* Now parse new submenu. */
+ GtkWidget * menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
+ RecurseContext recurse = {0};
+ recurse.toplevel = gtk_widget_get_toplevel(widget);
+ recurse.parent = item;
+ parse_menu_structure_helper(menu, &recurse);
+ }
}
static gboolean