aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-05-06 08:23:19 +0100
committerTed Gould <ted@canonical.com>2009-05-06 08:23:19 +0100
commit616007d3189fddf8e490b9e589bb2eeb0b486ae9 (patch)
tree5bb414cfe536b51fa035b8aed55c2d565e0da4b2
parent071c8b6d09ee51fc8f7d7514d74f031e6f6a048a (diff)
downloadlibdbusmenu-616007d3189fddf8e490b9e589bb2eeb0b486ae9.tar.gz
libdbusmenu-616007d3189fddf8e490b9e589bb2eeb0b486ae9.tar.bz2
libdbusmenu-616007d3189fddf8e490b9e589bb2eeb0b486ae9.zip
Fleshing out the children management
-rw-r--r--libdbusmenu-glib/menuitem.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index 0aff2d8..9ccef96 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -170,28 +170,37 @@ dbusmenu_menuitem_get_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * parent
gboolean
dbusmenu_menuitem_child_append (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)
{
-
- return FALSE;
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ priv->children = g_list_append(priv->children, child);
+ return TRUE;
}
gboolean
dbusmenu_menuitem_child_delete (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)
{
-
- return FALSE;
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ priv->children = g_list_remove(priv->children, child);
+ return TRUE;
}
gboolean
dbusmenu_menuitem_child_add_position (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position)
{
-
-
- return FALSE;
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ priv->children = g_list_insert(priv->children, child, position);
+ return TRUE;
}
DbusmenuMenuitem *
dbusmenu_menuitem_child_find (DbusmenuMenuitem * mi, guint id)
{
+ GList * childs = dbusmenu_menuitem_get_children(mi);
+ for ( ; childs == NULL; childs = g_list_next(childs)) {
+ DbusmenuMenuitem * lmi = DBUSMENU_MENUITEM(childs->data);
+ if (id == dbusmenu_menuitem_get_id(lmi)) {
+ return lmi;
+ }
+ }
return NULL;
}