aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/menuitem.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdbusmenu-glib/menuitem.c')
-rw-r--r--libdbusmenu-glib/menuitem.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index f6cd99e..3aa39c6 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -135,8 +135,20 @@ dbusmenu_menuitem_property_exist (DbusmenuMenuitem * mi, const gchar * property)
}
void
-dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray ** array)
+dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray * array)
{
+ g_return_if_fail(DBUSMENU_IS_MENUITEM(mi));
+
+ GList * children = dbusmenu_menuitem_get_children(mi);
+ if (children == NULL) {
+ g_ptr_array_add(array, g_strdup_printf("<menu id=\"%d\" />", dbusmenu_menuitem_get_id(mi)));
+ } else {
+ g_ptr_array_add(array, g_strdup_printf("<menu id=\"%d\">", dbusmenu_menuitem_get_id(mi)));
+ for ( ; children != NULL; children = children->next) {
+ dbus_menuitem_buildxml(DBUSMENU_MENUITEM(children->data), array);
+ }
+ g_ptr_array_add(array, g_strdup("</menu>"));
+ }
return;
}