aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/menuitem-proxy.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-02-10 17:07:13 -0600
committerTed Gould <ted@gould.cx>2010-02-10 17:07:13 -0600
commit52cb0d03b8b49f8af1e76258228dd72eff039031 (patch)
tree6fe79490f697dd902f4f6bab130b13fbc67212bb /libdbusmenu-glib/menuitem-proxy.c
parent6218dd513fb61750af75b9c647c76cdb33f72893 (diff)
downloadlibdbusmenu-52cb0d03b8b49f8af1e76258228dd72eff039031.tar.gz
libdbusmenu-52cb0d03b8b49f8af1e76258228dd72eff039031.tar.bz2
libdbusmenu-52cb0d03b8b49f8af1e76258228dd72eff039031.zip
Fleshing out delete
Diffstat (limited to 'libdbusmenu-glib/menuitem-proxy.c')
-rw-r--r--libdbusmenu-glib/menuitem-proxy.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/libdbusmenu-glib/menuitem-proxy.c b/libdbusmenu-glib/menuitem-proxy.c
index 796561d..f61d2e7 100644
--- a/libdbusmenu-glib/menuitem-proxy.c
+++ b/libdbusmenu-glib/menuitem-proxy.c
@@ -195,6 +195,23 @@ proxy_item_child_added (DbusmenuMenuitem * parent, DbusmenuMenuitem * child, gui
static void
proxy_item_child_removed (DbusmenuMenuitem * parent, DbusmenuMenuitem * child, gpointer user_data)
{
+ DbusmenuMenuitemProxy * pmi = DBUSMENU_MENUITEM_PROXY(user_data);
+ GList * children = dbusmenu_menuitem_get_children(DBUSMENU_MENUITEM(pmi));
+ DbusmenuMenuitemProxy * finalpmi = NULL;
+ GList * childitem;
+
+ for (childitem = children; childitem != NULL; childitem = g_list_next(childitem)) {
+ DbusmenuMenuitemProxy * childpmi = (DbusmenuMenuitemProxy *)childitem->data;
+ DbusmenuMenuitem * childmi = dbusmenu_menuitem_proxy_get_wrapped(childpmi);
+ if (childmi == child) {
+ finalpmi = childpmi;
+ break;
+ }
+ }
+
+ if (finalpmi != NULL) {
+ dbusmenu_menuitem_child_delete(DBUSMENU_MENUITEM(pmi), DBUSMENU_MENUITEM(finalpmi));
+ }
return;
}