From 87fea6b9f16b49d3ad1b6801e53fd89f516b2973 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 11 May 2009 12:12:10 -0500 Subject: Allowing people to take children. --- libdbusmenu-glib/menuitem.c | 21 +++++++++++++++++++++ libdbusmenu-glib/menuitem.h | 1 + 2 files changed, 22 insertions(+) (limited to 'libdbusmenu-glib') diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c index 2cf4b85..985de95 100644 --- a/libdbusmenu-glib/menuitem.c +++ b/libdbusmenu-glib/menuitem.c @@ -149,6 +149,27 @@ dbusmenu_menuitem_get_children (DbusmenuMenuitem * mi) return priv->children; } +/** + dbusmenu_menuitem_take_children: + @mi: The #DbusmenMenuitem to take the children from. + + While the name sounds devious that's exactly what this function + does. It takes the list of children from the @mi and clears the + internal list. The calling function is no in charge of the ref's + on the children it has taken. A lot of responsibility involved + in taking children. +*/ +GList * +dbusmenu_menuitem_take_children (DbusmenuMenuitem * mi) +{ + g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), NULL); + + DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi); + GList * children = priv->children; + priv->children = NULL; + return children; +} + guint dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent) { diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h index c4057dd..b7d767c 100644 --- a/libdbusmenu-glib/menuitem.h +++ b/libdbusmenu-glib/menuitem.h @@ -48,6 +48,7 @@ DbusmenuMenuitem * dbusmenu_menuitem_new_with_id (guint id); guint dbusmenu_menuitem_get_id (DbusmenuMenuitem * mi); GList * dbusmenu_menuitem_get_children (DbusmenuMenuitem * mi); +GList * dbusmenu_menuitem_take_children (DbusmenuMenuitem * mi); guint dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent); gboolean dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child); -- cgit v1.2.3