[gnome-menus] libmenu: Add a way to grab NoDisplay on an item and all of its parents



commit ade49e7f07ef6cb0168002f6c12a4be6c1bdbee8
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Jun 18 18:08:26 2012 -0400

    libmenu: Add a way to grab NoDisplay on an item and all of its parents
    
    Some applications may want a way to show or hide a tree entry based on
    its visibility in the actual tree.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=678419

 libmenu/gmenu-tree.c |   31 +++++++++++++++++++++++++------
 libmenu/gmenu-tree.h |    1 +
 2 files changed, 26 insertions(+), 6 deletions(-)
---
diff --git a/libmenu/gmenu-tree.c b/libmenu/gmenu-tree.c
index 688e8af..53f5e1e 100644
--- a/libmenu/gmenu-tree.c
+++ b/libmenu/gmenu-tree.c
@@ -128,7 +128,6 @@ struct GMenuTreeEntry
   char         *desktop_file_id;
 
   guint is_excluded : 1;
-  guint is_nodisplay : 1;
   guint is_unallocated : 1;
 };
 
@@ -1221,6 +1220,31 @@ gmenu_tree_entry_get_desktop_file_id (GMenuTreeEntry *entry)
 }
 
 gboolean
+gmenu_tree_entry_get_is_nodisplay_recurse (GMenuTreeEntry *entry)
+{
+  GMenuTreeDirectory *directory;
+  GDesktopAppInfo *app_info;
+
+  g_return_val_if_fail (entry != NULL, FALSE);
+
+  app_info = gmenu_tree_entry_get_app_info (entry);
+
+  if (g_desktop_app_info_get_nodisplay (app_info))
+    return TRUE;
+
+  directory = entry->item.parent;
+  while (directory != NULL)
+    {
+      if (directory->is_nodisplay)
+        return TRUE;
+
+      directory = directory->item.parent;
+    }
+
+  return FALSE;
+}
+
+gboolean
 gmenu_tree_entry_get_is_excluded (GMenuTreeEntry *entry)
 {
   g_return_val_if_fail (entry != NULL, FALSE);
@@ -1542,7 +1566,6 @@ gmenu_tree_entry_new (GMenuTreeDirectory *parent,
 		      DesktopEntry       *desktop_entry,
 		      const char         *desktop_file_id,
 		      gboolean            is_excluded,
-                      gboolean            is_nodisplay,
                       gboolean            is_unallocated)
 {
   GMenuTreeEntry *retval;
@@ -1557,7 +1580,6 @@ gmenu_tree_entry_new (GMenuTreeDirectory *parent,
   retval->desktop_entry   = desktop_entry_ref (desktop_entry);
   retval->desktop_file_id = g_strdup (desktop_file_id);
   retval->is_excluded     = is_excluded != FALSE;
-  retval->is_nodisplay    = is_nodisplay != FALSE;
   retval->is_unallocated  = is_unallocated != FALSE;
 
   return retval;
@@ -3260,7 +3282,6 @@ entries_listify_foreach (const char         *desktop_file_id,
                                            desktop_entry,
                                            desktop_file_id,
                                            FALSE,
-                                           desktop_entry_get_no_display (desktop_entry),
                                            FALSE));
 }
 
@@ -3275,7 +3296,6 @@ excluded_entries_listify_foreach (const char         *desktop_file_id,
 					   desktop_entry,
 					   desktop_file_id,
 					   TRUE,
-                                           desktop_entry_get_no_display (desktop_entry),
                                            FALSE));
 }
 
@@ -3290,7 +3310,6 @@ unallocated_entries_listify_foreach (const char         *desktop_file_id,
                                            desktop_entry,
                                            desktop_file_id,
                                            FALSE,
-                                           desktop_entry_get_no_display (desktop_entry),
                                            TRUE));
 }
 
diff --git a/libmenu/gmenu-tree.h b/libmenu/gmenu-tree.h
index 06e653e..db25572 100644
--- a/libmenu/gmenu-tree.h
+++ b/libmenu/gmenu-tree.h
@@ -139,6 +139,7 @@ GMenuTree          *gmenu_tree_entry_get_tree           (GMenuTreeEntry *entry);
 const char *gmenu_tree_entry_get_desktop_file_path (GMenuTreeEntry *entry);
 const char *gmenu_tree_entry_get_desktop_file_id   (GMenuTreeEntry *entry);
 
+gboolean gmenu_tree_entry_get_is_nodisplay_recurse  (GMenuTreeEntry *entry);
 gboolean gmenu_tree_entry_get_is_excluded  (GMenuTreeEntry *entry);
 gboolean gmenu_tree_entry_get_is_unallocated  (GMenuTreeEntry *entry);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]