]>
Commit | Line | Data |
---|---|---|
166477d6 | 1 | --- desktop-file-utils-0.6/src/menu-process.c.hide-empty-submenus 2004-03-05 13:23:23.139062728 -0500 |
2 | +++ desktop-file-utils-0.6/src/menu-process.c 2004-03-05 15:27:01.639279272 -0500 | |
3 | @@ -2041,6 +2041,30 @@ | |
4 | } | |
5 | } | |
6 | ||
7 | +static void remove_empty_submenus (TreeNode * node) | |
8 | +{ | |
9 | + GSList *subdir; | |
10 | + | |
11 | + subdir = node->subdirs; | |
12 | + while (subdir != NULL) | |
13 | + { | |
14 | + TreeNode *subdir_node = subdir->data; | |
15 | + GSList *next = subdir->next; | |
16 | + | |
17 | + remove_empty_submenus (subdir_node); | |
18 | + | |
19 | + /* If after removing empty children of this submenu, the submenu | |
20 | + * itself is empty, remove it from the parent menu (which is 'node') | |
21 | + */ | |
22 | + if (subdir_node->subdirs == NULL && subdir_node->entries == NULL) | |
23 | + { | |
24 | + node->subdirs = g_slist_remove_link (node->subdirs, subdir); | |
25 | + tree_node_free (subdir_node); | |
26 | + } | |
27 | + subdir = next; | |
28 | + } | |
29 | +} | |
30 | + | |
31 | static void | |
32 | build_tree (DesktopEntryTree *tree) | |
33 | { | |
34 | @@ -2057,6 +2081,9 @@ | |
35 | if (tree->root) | |
36 | process_only_unallocated (tree->root, allocated); | |
37 | ||
38 | + if (tree->root) | |
39 | + remove_empty_submenus (tree->root); | |
40 | + | |
41 | g_hash_table_destroy (allocated); | |
42 | ||
43 | if (tree->root == NULL) |