diff options
author | Ted Gould <ted@gould.cx> | 2011-01-27 14:12:16 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-01-27 14:12:16 -0600 |
commit | b3088525e0497a660667dc4069554274e95ec498 (patch) | |
tree | 907dd3c614e08e4ab107b44ae3ce7c5ca874c185 /libdbusmenu-glib/server.c | |
parent | 3393d799cd65efdfea2c882b775e58f15a205844 (diff) | |
parent | db78a405701a56b3df9359293dd944a5d7b8bbe7 (diff) | |
download | libdbusmenu-b3088525e0497a660667dc4069554274e95ec498.tar.gz libdbusmenu-b3088525e0497a660667dc4069554274e95ec498.tar.bz2 libdbusmenu-b3088525e0497a660667dc4069554274e95ec498.zip |
* Upstream Merge
* Fixing setting toggle to a boolean
* Fixing some memory leaks
* Fixing signatures in GetChildren
* Look for the serializable menuitems and use their
build functions
* Fix critical message from being printed
* Fixing shutdown messages on destruction
* Adding a parser
* Adding a serializable menu item
Diffstat (limited to 'libdbusmenu-glib/server.c')
-rw-r--r-- | libdbusmenu-glib/server.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c index 095f333..adb9f91 100644 --- a/libdbusmenu-glib/server.c +++ b/libdbusmenu-glib/server.c @@ -975,11 +975,17 @@ serialize_menuitem(gpointer data, gpointer user_data) { DbusmenuMenuitem * mi = DBUSMENU_MENUITEM(data); GVariantBuilder * builder = (GVariantBuilder *)(user_data); + GVariantBuilder tuple; + + g_variant_builder_init(&tuple, G_VARIANT_TYPE_TUPLE); gint id = dbusmenu_menuitem_get_id(mi); + g_variant_builder_add_value(&tuple, g_variant_new_int32(id)); + GVariant * props = dbusmenu_menuitem_properties_variant(mi); + g_variant_builder_add_value(&tuple, props); - g_variant_builder_add(builder, "ia{sv}", id, props); + g_variant_builder_add_value(builder, g_variant_builder_end(&tuple)); return; } @@ -1020,7 +1026,8 @@ bus_get_children (DbusmenuServer * server, GVariant * params, GDBusMethodInvocat g_list_foreach(children, serialize_menuitem, &builder); - ret = g_variant_new("(a(ia{svg}))", g_variant_builder_end(&builder)); + GVariant * end = g_variant_builder_end(&builder); + ret = g_variant_new_tuple(&end, 1); } else { GError * error = NULL; ret = g_variant_parse(g_variant_type_new("(a(ia{sv}))"), "([(0, {})],)", NULL, NULL, &error); |