aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-02-08 09:14:41 -0600
committerTed Gould <ted@gould.cx>2011-02-08 09:14:41 -0600
commitfd553bb625a37ac77d84e8100bd2404748ea21e2 (patch)
treeaeb216c654feb7c1e50a48df0753c542dcbded38 /libdbusmenu-glib
parenta816313a42ede72443bf7659fe55916d11a21396 (diff)
downloadlibdbusmenu-fd553bb625a37ac77d84e8100bd2404748ea21e2.tar.gz
libdbusmenu-fd553bb625a37ac77d84e8100bd2404748ea21e2.tar.bz2
libdbusmenu-fd553bb625a37ac77d84e8100bd2404748ea21e2.zip
Handling and unrolling the properties updated signal
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r--libdbusmenu-glib/client.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index 5e492a3..aa0b3f0 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -1035,6 +1035,22 @@ menuproxy_signal_cb (GDBusProxy * proxy, gchar * sender, gchar * signal, GVarian
guint revision; gint parent;
g_variant_get(params, "(ui)", &revision, &parent);
layout_update(proxy, revision, parent, client);
+ } else if (g_strcmp0(signal, "ItemPropertiesUpdated") == 0) {
+ GVariantIter items;
+ g_variant_iter_init(&items, g_variant_get_child_value(params, 0));
+
+ GVariant * item;
+ while ((item = g_variant_iter_next_value(&items)) != NULL) {
+ gint id = g_variant_get_int32(g_variant_get_child_value(item, 0));
+ GVariantIter properties;
+ g_variant_iter_init(&properties, g_variant_get_child_value(item, 1));
+ gchar * property;
+ GVariant * value;
+
+ while (g_variant_iter_next(&properties, "{sv}", &property, &value)) {
+ id_prop_update(proxy, id, property, value, client);
+ }
+ }
} else if (g_strcmp0(signal, "ItemPropertyUpdated") == 0) {
gint id; gchar * property; GVariant * value;
g_variant_get(params, "(isv)", &id, &property, &value);