aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-09-21 15:01:40 -0500
committerTed Gould <ted@canonical.com>2009-09-21 15:01:40 -0500
commitb8c1eb0bf8b17d703fa8fea3e2c68bac6a7fee61 (patch)
treebfd15dd614c8923882af770d067904554f01fa52 /libdbusmenu-glib
parent363f7fa805de63ee1a8e0bfca05ce56bcf475489 (diff)
downloadlibdbusmenu-b8c1eb0bf8b17d703fa8fea3e2c68bac6a7fee61.tar.gz
libdbusmenu-b8c1eb0bf8b17d703fa8fea3e2c68bac6a7fee61.tar.bz2
libdbusmenu-b8c1eb0bf8b17d703fa8fea3e2c68bac6a7fee61.zip
Putting the revision number into the XML sent across the bus.
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r--libdbusmenu-glib/menuitem.c10
-rw-r--r--libdbusmenu-glib/menuitem.h2
-rw-r--r--libdbusmenu-glib/server.c4
3 files changed, 9 insertions, 7 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index 41c48e2..0c44e3c 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -806,6 +806,7 @@ dbusmenu_menuitem_get_root (DbusmenuMenuitem * mi)
dbusmenu_menuitem_buildxml:
@mi: #DbusmenuMenuitem to represent in XML
@array: A list of string that will be turned into an XML file
+ @revision: The revision of the layout to embed in the XML
This function will add strings to the array @array. It will put
at least one entry if this menu item has no children. If it has
@@ -814,17 +815,18 @@ dbusmenu_menuitem_get_root (DbusmenuMenuitem * mi)
children to place their own tags in the array in between those two.
*/
void
-dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray * array)
+dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray * array, gint revision)
{
g_return_if_fail(DBUSMENU_IS_MENUITEM(mi));
GList * children = dbusmenu_menuitem_get_children(mi);
+ /* TODO: Only put revision info in the root node. Save some bandwidth. */
if (children == NULL) {
- g_ptr_array_add(array, g_strdup_printf("<menu id=\"%d\" />", dbusmenu_menuitem_get_id(mi)));
+ g_ptr_array_add(array, g_strdup_printf("<menu id=\"%d\" revision=\"%d\" />", dbusmenu_menuitem_get_id(mi), revision));
} else {
- g_ptr_array_add(array, g_strdup_printf("<menu id=\"%d\">", dbusmenu_menuitem_get_id(mi)));
+ g_ptr_array_add(array, g_strdup_printf("<menu id=\"%d\" revision=\"%d\">", dbusmenu_menuitem_get_id(mi), revision));
for ( ; children != NULL; children = children->next) {
- dbusmenu_menuitem_buildxml(DBUSMENU_MENUITEM(children->data), array);
+ dbusmenu_menuitem_buildxml(DBUSMENU_MENUITEM(children->data), array, revision);
}
g_ptr_array_add(array, g_strdup("</menu>"));
}
diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h
index ebde0a0..6c3c265 100644
--- a/libdbusmenu-glib/menuitem.h
+++ b/libdbusmenu-glib/menuitem.h
@@ -136,7 +136,7 @@ GHashTable * dbusmenu_menuitem_properties_copy (DbusmenuMenuitem * mi);
void dbusmenu_menuitem_set_root (DbusmenuMenuitem * mi, gboolean root);
gboolean dbusmenu_menuitem_get_root (DbusmenuMenuitem * mi);
-void dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray * array);
+void dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray * array, gint revision);
void dbusmenu_menuitem_foreach (DbusmenuMenuitem * mi, void (*func) (DbusmenuMenuitem * mi, gpointer data), gpointer data);
void dbusmenu_menuitem_activate (DbusmenuMenuitem * mi);
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c
index af7bbef..1ac1da6 100644
--- a/libdbusmenu-glib/server.c
+++ b/libdbusmenu-glib/server.c
@@ -280,9 +280,9 @@ get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec)
GPtrArray * xmlarray = g_ptr_array_new();
if (priv->root == NULL) {
/* g_debug("Getting layout without root node!"); */
- g_ptr_array_add(xmlarray, g_strdup("<menu />"));
+ g_ptr_array_add(xmlarray, g_strdup_printf("<menu revision=\"%d\" />", priv->layout_revision));
} else {
- dbusmenu_menuitem_buildxml(priv->root, xmlarray);
+ dbusmenu_menuitem_buildxml(priv->root, xmlarray, priv->layout_revision);
}
g_ptr_array_add(xmlarray, NULL);