aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/client.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-03-02 22:53:09 -0600
committerTed Gould <ted@gould.cx>2011-03-02 22:53:09 -0600
commit75eb455e972b3e04b2fc8b89ead2815dff070fa5 (patch)
tree341cd2cd94b8305e9256e9778ec6856447096e48 /libdbusmenu-glib/client.c
parent653e6aaf8dfbc91f728cd8766991a50c2fc6f275 (diff)
downloadlibdbusmenu-75eb455e972b3e04b2fc8b89ead2815dff070fa5.tar.gz
libdbusmenu-75eb455e972b3e04b2fc8b89ead2815dff070fa5.tar.bz2
libdbusmenu-75eb455e972b3e04b2fc8b89ead2815dff070fa5.zip
Handle getting the property and/or getting an update to it.
Diffstat (limited to 'libdbusmenu-glib/client.c')
-rw-r--r--libdbusmenu-glib/client.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index a91e9f6..9954683 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -1071,6 +1071,7 @@ menuproxy_prop_changed_cb (GDBusProxy * proxy, GVariant * properties, GStrv inva
DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(user_data);
DbusmenuTextDirection olddir = priv->text_direction;
DbusmenuStatus oldstatus = priv->status;
+ gboolean dirs_changed = FALSE;
/* Invalidate first */
gchar * invalid;
@@ -1082,6 +1083,13 @@ menuproxy_prop_changed_cb (GDBusProxy * proxy, GVariant * properties, GStrv inva
if (g_strcmp0(invalid, "Status") == 0) {
priv->status = DBUSMENU_STATUS_NORMAL;
}
+ if (g_strcmp0(invalid, "IconThemePath") == 0) {
+ if (priv->icon_dirs != NULL) {
+ dirs_changed = TRUE;
+ g_strfreev(priv->icon_dirs);
+ priv->icon_dirs = NULL;
+ }
+ }
}
/* Check updates */
@@ -1105,6 +1113,15 @@ menuproxy_prop_changed_cb (GDBusProxy * proxy, GVariant * properties, GStrv inva
priv->status = dbusmenu_status_get_value_from_nick(g_variant_get_string(str, NULL));
}
+ if (g_strcmp0(key, "IconThemePath") == 0) {
+ if (priv->icon_dirs != NULL) {
+ g_strfreev(priv->icon_dirs);
+ priv->icon_dirs = NULL;
+ }
+
+ priv->icon_dirs = g_variant_dup_strv(value, NULL);
+ dirs_changed = TRUE;
+ }
g_variant_unref(value);
g_free(key);
@@ -1118,6 +1135,10 @@ menuproxy_prop_changed_cb (GDBusProxy * proxy, GVariant * properties, GStrv inva
g_object_notify(G_OBJECT(user_data), DBUSMENU_CLIENT_PROP_STATUS);
}
+ if (dirs_changed) {
+ // TODO: We need to tell someone!
+ }
+
return;
}