diff options
author | Ted Gould <ted@canonical.com> | 2009-06-23 15:54:49 -0500 |
---|---|---|
committer | Ted Gould <ted@canonical.com> | 2009-06-23 15:54:49 -0500 |
commit | df10a41905899f303eb8d63267e6bd385ba538d4 (patch) | |
tree | bef7ea512a52b2cca7068906010948aae6d9cfa7 /libdbusmenu-glib | |
parent | 8c3a3f8a0b0418e4cd93413fade9a43bb549f546 (diff) | |
download | libdbusmenu-df10a41905899f303eb8d63267e6bd385ba538d4.tar.gz libdbusmenu-df10a41905899f303eb8d63267e6bd385ba538d4.tar.bz2 libdbusmenu-df10a41905899f303eb8d63267e6bd385ba538d4.zip |
Signaling on root changes.
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r-- | libdbusmenu-glib/client.c | 9 |
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; } |