diff options
author | Ted Gould <ted@gould.cx> | 2010-02-10 17:07:13 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-02-10 17:07:13 -0600 |
commit | 52cb0d03b8b49f8af1e76258228dd72eff039031 (patch) | |
tree | 6fe79490f697dd902f4f6bab130b13fbc67212bb | |
parent | 6218dd513fb61750af75b9c647c76cdb33f72893 (diff) | |
download | libdbusmenu-52cb0d03b8b49f8af1e76258228dd72eff039031.tar.gz libdbusmenu-52cb0d03b8b49f8af1e76258228dd72eff039031.tar.bz2 libdbusmenu-52cb0d03b8b49f8af1e76258228dd72eff039031.zip |
Fleshing out delete
-rw-r--r-- | libdbusmenu-glib/menuitem-proxy.c | 17 |
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; } |