--- gnome-menus-2.19.92/libmenu/menu-util.c.separator 2007-09-17 12:27:50.000000000 +0200 +++ gnome-menus-2.19.92/libmenu/menu-util.c 2007-09-17 12:28:19.000000000 +0200 @@ -458,7 +458,7 @@ append_to_string (MenuLayoutNode *node, break; case MENU_LAYOUT_NODE_SEPARATOR: - append_simple (node, depth, "Name", str); + append_simple (node, depth, "Separator", str); break; case MENU_LAYOUT_NODE_MERGE: --- gnome-menus-2.19.92/libmenu/gmenu-tree.c.separator 2007-09-04 19:34:43.000000000 +0200 +++ gnome-menus-2.19.92/libmenu/gmenu-tree.c 2007-09-17 15:13:35.000000000 +0200 @@ -3883,9 +3883,15 @@ process_layout_info (GMenuTree break; case MENU_LAYOUT_NODE_SEPARATOR: - menu_verbose ("Adding a separator in '%s'\n", directory->name); - directory->contents = g_slist_append (directory->contents, + /* don't add separator if not empty */ + if (directory->contents != NULL) { + menu_verbose ("Adding a separator in '%s'\n", directory->name); + directory->contents = g_slist_append (directory->contents, gmenu_tree_separator_new (directory)); + } + else { + menu_verbose ("Skipping a separator in '%s', empty menu\n", directory->name); + } break; case MENU_LAYOUT_NODE_MERGE: @@ -3926,6 +3932,18 @@ process_layout_info (GMenuTree tmp = tmp->next; } + + /* make sure last entry is not a separator */ + if (directory->contents != NULL) { + tmp = g_slist_last (directory->contents); + + if (tmp && gmenu_tree_item_get_type (tmp->data) == GMENU_TREE_ITEM_SEPARATOR) { + menu_verbose ("Remove separator in '%s', it is the last item of this menu\n", directory->name); + gmenu_tree_item_unref_and_unset_parent (tmp->data); + directory->contents = g_slist_delete_link (directory->contents, + tmp); + } + } } g_slist_foreach (directory->subdirs,