]> git.pld-linux.org Git - packages/desktop-file-utils.git/blob - desktop-file-utils-hide_empty_submenus.patch
- added nodisplay and noshowin patches (support for NoDisplay and NoShowIn
[packages/desktop-file-utils.git] / desktop-file-utils-hide_empty_submenus.patch
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.026684 seconds and 3 git commands to generate.