diff options
author | Ted Gould <ted@gould.cx> | 2011-02-08 09:14:41 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-02-08 09:14:41 -0600 |
commit | fd553bb625a37ac77d84e8100bd2404748ea21e2 (patch) | |
tree | aeb216c654feb7c1e50a48df0753c542dcbded38 /libdbusmenu-glib | |
parent | a816313a42ede72443bf7659fe55916d11a21396 (diff) | |
download | libdbusmenu-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.c | 16 |
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); |