aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/menuitem.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-11-18 13:21:36 -0600
committerTed Gould <ted@gould.cx>2010-11-18 13:21:36 -0600
commit233eec5d073b4101b3100598c60e497cf5075586 (patch)
tree65cadd287d745bd8a3bd3d0d246f95c3eac59b55 /libdbusmenu-glib/menuitem.c
parent62a03e300af33f8ad306c08337f33f59fb8511b3 (diff)
downloadlibdbusmenu-233eec5d073b4101b3100598c60e497cf5075586.tar.gz
libdbusmenu-233eec5d073b4101b3100598c60e497cf5075586.tar.bz2
libdbusmenu-233eec5d073b4101b3100598c60e497cf5075586.zip
Cleaning up the building of a properties variant
Diffstat (limited to 'libdbusmenu-glib/menuitem.c')
-rw-r--r--libdbusmenu-glib/menuitem.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index d9fbf25..66dfb66 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -1216,18 +1216,7 @@ dbusmenu_menuitem_properties_copy (DbusmenuMenuitem * mi)
static void
variant_helper (gpointer in_key, gpointer in_value, gpointer user_data)
{
- /* TODO: Switch to being a variant */
- GValue vval = {0};
- g_value_init(&vval, G_TYPE_VARIANT);
-
- if (!g_value_transform((GValue *)in_value, &vval)) {
- g_warning("Unable to convert property '%s' of type '%s'", (gchar *)in_key, G_VALUE_TYPE_NAME(in_value));
- return;
- }
-
- g_variant_builder_add((GVariantBuilder *)user_data, "{sv}", in_key, g_value_get_variant(&vval));
- g_value_unset(&vval);
-
+ g_variant_builder_add((GVariantBuilder *)user_data, "sv", in_key, in_value);
return;
}
@@ -1247,12 +1236,17 @@ dbusmenu_menuitem_properties_variant (DbusmenuMenuitem * mi)
DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
- GVariantBuilder * builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
+ GVariant * final_variant = NULL;
+
+ if (g_hash_table_size(priv->properties) > 0) {
+ GVariantBuilder builder;
+ g_variant_builder_init(&builder, g_variant_type_new("a{sv}"));
- g_hash_table_foreach(priv->properties, variant_helper, builder);
+ g_hash_table_foreach(priv->properties, variant_helper, &builder);
+
+ final_variant = g_variant_builder_end(&builder);
+ }
- GVariant * final_variant = g_variant_builder_end(builder);
- g_variant_builder_unref(builder);
return final_variant;
}