diff options
author | Ken VanDine <ken.vandine@canonical.com> | 2011-02-22 09:46:48 -0500 |
---|---|---|
committer | Ken VanDine <ken.vandine@canonical.com> | 2011-02-22 09:46:48 -0500 |
commit | 7971e39e569ae85642666803a9b2fd329fb6b654 (patch) | |
tree | f82bbfadaedcb18bfa98ad78f58108eaa4857bee /libdbusmenu-glib/menuitem.c | |
parent | ddf231e6a387990c5b011ef7cd998333a32aba02 (diff) | |
parent | 5eda2e026654bb7d79c30053f60cc2f67171be75 (diff) | |
download | libdbusmenu-7971e39e569ae85642666803a9b2fd329fb6b654.tar.gz libdbusmenu-7971e39e569ae85642666803a9b2fd329fb6b654.tar.bz2 libdbusmenu-7971e39e569ae85642666803a9b2fd329fb6b654.zip |
releasing version 0.3.98-0ubuntu2
Diffstat (limited to 'libdbusmenu-glib/menuitem.c')
-rw-r--r-- | libdbusmenu-glib/menuitem.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c index 54d2540..bc38e24 100644 --- a/libdbusmenu-glib/menuitem.c +++ b/libdbusmenu-glib/menuitem.c @@ -1274,7 +1274,7 @@ dbusmenu_menuitem_properties_variant (DbusmenuMenuitem * mi, const gchar ** prop GVariant * final_variant = NULL; - if (g_hash_table_size(priv->properties) > 0) { + if (properties == NULL && g_hash_table_size(priv->properties) > 0) { GVariantBuilder builder; g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); @@ -1283,6 +1283,33 @@ dbusmenu_menuitem_properties_variant (DbusmenuMenuitem * mi, const gchar ** prop final_variant = g_variant_builder_end(&builder); } + if (properties != NULL) { + GVariantBuilder builder; + gboolean builder_init = FALSE; + int i = 0; const gchar * prop; + + for (prop = properties[i]; prop != NULL; prop = properties[++i]) { + GVariant * propvalue = dbusmenu_menuitem_property_get_variant(mi, prop); + + if (propvalue == NULL) { + continue; + } + + if (!builder_init) { + builder_init = TRUE; + g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); + } + + GVariant * dict = g_variant_new_dict_entry(g_variant_new_string((gchar *)prop), + g_variant_new_variant((GVariant *)propvalue)); + g_variant_builder_add_value(&builder, dict); + } + + if (builder_init) { + final_variant = g_variant_builder_end(&builder); + } + } + return final_variant; } |