aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libdbusmenu-gtk/parser.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c
index 0ecfa1e..ac69b2a 100644
--- a/libdbusmenu-gtk/parser.c
+++ b/libdbusmenu-gtk/parser.c
@@ -415,8 +415,11 @@ parse_menu_structure_helper (GtkWidget * widget, RecurseContext * recurse)
/* Oops, let's tell our parents about us */
if (peek == NULL) {
- if (dbusmenu_menuitem_get_parent(thisitem) != NULL) {
- dbusmenu_menuitem_unparent(thisitem);
+ g_object_ref(thisitem);
+
+ DbusmenuMenuitem * parent = dbusmenu_menuitem_get_parent(thisitem);
+ if (parent != NULL) {
+ dbusmenu_menuitem_child_delete(parent, thisitem);
}
gint pos = get_child_position (widget);
@@ -427,6 +430,8 @@ parse_menu_structure_helper (GtkWidget * widget, RecurseContext * recurse)
else
dbusmenu_menuitem_child_append (recurse->parent,
thisitem);
+
+ g_object_unref(thisitem);
}
}