]> git.pld-linux.org Git - packages/desktop-file-utils.git/blame - desktop-file-utils-hide_empty_submenus.patch
- make new desktop files and changes instantly visible
[packages/desktop-file-utils.git] / desktop-file-utils-hide_empty_submenus.patch
CommitLineData
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)
This page took 0.071707 seconds and 4 git commands to generate.