aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-06-23 15:54:49 -0500
committerTed Gould <ted@canonical.com>2009-06-23 15:54:49 -0500
commitdf10a41905899f303eb8d63267e6bd385ba538d4 (patch)
treebef7ea512a52b2cca7068906010948aae6d9cfa7
parent8c3a3f8a0b0418e4cd93413fade9a43bb549f546 (diff)
downloadlibdbusmenu-df10a41905899f303eb8d63267e6bd385ba538d4.tar.gz
libdbusmenu-df10a41905899f303eb8d63267e6bd385ba538d4.tar.bz2
libdbusmenu-df10a41905899f303eb8d63267e6bd385ba538d4.zip
Signaling on root changes.
-rw-r--r--libdbusmenu-glib/client.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index 5bf7087..5c429c8 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -387,6 +387,7 @@ proxy_destroyed (GObject * gobj_proxy, gpointer userdata)
if (priv->root != NULL) {
g_object_unref(G_OBJECT(priv->root));
priv->root = NULL;
+ g_signal_emit(G_OBJECT(userdata), signals[ROOT_CHANGED], 0, NULL, TRUE);
g_signal_emit(G_OBJECT(userdata), signals[LAYOUT_UPDATED], 0, TRUE);
}
@@ -589,12 +590,18 @@ parse_layout (DbusmenuClient * client, const gchar * layout)
xmlNodePtr root = xmlDocGetRootElement(xmldoc);
+ DbusmenuMenuitem * oldroot = priv->root;
priv->root = parse_layout_xml(client, root, priv->root, NULL, priv->menuproxy);
+ xmlFreeDoc(xmldoc);
+
if (priv->root == NULL) {
g_warning("Unable to parse layout on client %s object %s: %s", priv->dbus_name, priv->dbus_object, layout);
}
- xmlFreeDoc(xmldoc);
+ if (priv->root != oldroot) {
+ g_signal_emit(G_OBJECT(client), signals[ROOT_CHANGED], 0, priv->root, TRUE);
+ }
+
return;
}