[gnome-menus] libmenu: Allow grabbing the GMenuTree from any GMenuTreeItem
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-menus] libmenu: Allow grabbing the GMenuTree from any GMenuTreeItem
- Date: Wed, 20 Jun 2012 18:35:52 +0000 (UTC)
commit fef1440c7b440d0360992c2178ef636b02ef777a
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Fri Jun 1 09:16:01 2012 -0400
libmenu: Allow grabbing the GMenuTree from any GMenuTreeItem
https://bugzilla.gnome.org/show_bug.cgi?id=677270
libmenu/gmenu-tree.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++-
libmenu/gmenu-tree.h | 6 +++
2 files changed, 95 insertions(+), 2 deletions(-)
---
diff --git a/libmenu/gmenu-tree.c b/libmenu/gmenu-tree.c
index 1c46c8e..688e8af 100644
--- a/libmenu/gmenu-tree.c
+++ b/libmenu/gmenu-tree.c
@@ -84,6 +84,7 @@ struct GMenuTreeItem
GMenuTreeItemType type;
GMenuTreeDirectory *parent;
+ GMenuTree *tree;
};
struct GMenuTreeIter
@@ -1137,6 +1138,22 @@ gmenu_tree_directory_get_is_nodisplay (GMenuTreeDirectory *directory)
return directory->is_nodisplay;
}
+/**
+ * gmenu_tree_directory_get_tree:
+ * @directory: A #GMenuTreeDirectory
+ *
+ * Grab the tree associated with a #GMenuTreeItem.
+ *
+ * Returns: (transfer full): The #GMenuTree
+ */
+GMenuTree *
+gmenu_tree_directory_get_tree (GMenuTreeDirectory *directory)
+{
+ g_return_val_if_fail (directory != NULL, NULL);
+
+ return g_object_ref (directory->item.tree);
+}
+
static void
append_directory_path (GMenuTreeDirectory *directory,
GString *path)
@@ -1219,6 +1236,22 @@ gmenu_tree_entry_get_is_unallocated (GMenuTreeEntry *entry)
return entry->is_unallocated;
}
+/**
+ * gmenu_tree_entry_get_tree:
+ * @entry: A #GMenuTreeEntry
+ *
+ * Grab the tree associated with a #GMenuTreeEntry.
+ *
+ * Returns: (transfer full): The #GMenuTree
+ */
+GMenuTree *
+gmenu_tree_entry_get_tree (GMenuTreeEntry *entry)
+{
+ g_return_val_if_fail (entry != NULL, NULL);
+
+ return g_object_ref (entry->item.tree);
+}
+
GMenuTreeDirectory *
gmenu_tree_header_get_directory (GMenuTreeHeader *header)
{
@@ -1227,6 +1260,22 @@ gmenu_tree_header_get_directory (GMenuTreeHeader *header)
return gmenu_tree_item_ref (header->directory);
}
+/**
+ * gmenu_tree_header_get_tree:
+ * @header: A #GMenuTreeHeader
+ *
+ * Grab the tree associated with a #GMenuTreeHeader.
+ *
+ * Returns: (transfer full): The #GMenuTree
+ */
+GMenuTree *
+gmenu_tree_header_get_tree (GMenuTreeHeader *header)
+{
+ g_return_val_if_fail (header != NULL, NULL);
+
+ return g_object_ref (header->item.tree);
+}
+
GMenuTreeItemType
gmenu_tree_alias_get_aliased_item_type (GMenuTreeAlias *alias)
{
@@ -1245,6 +1294,38 @@ gmenu_tree_alias_get_directory (GMenuTreeAlias *alias)
}
/**
+ * gmenu_tree_alias_get_tree:
+ * @alias: A #GMenuTreeAlias
+ *
+ * Grab the tree associated with a #GMenuTreeAlias.
+ *
+ * Returns: (transfer full): The #GMenuTree
+ */
+GMenuTree *
+gmenu_tree_alias_get_tree (GMenuTreeAlias *alias)
+{
+ g_return_val_if_fail (alias != NULL, NULL);
+
+ return g_object_ref (alias->item.tree);
+}
+
+/**
+ * gmenu_tree_separator_get_tree:
+ * @separator: A #GMenuTreeSeparator
+ *
+ * Grab the tree associated with a #GMenuTreeSeparator.
+ *
+ * Returns: (transfer full): The #GMenuTree
+ */
+GMenuTree *
+gmenu_tree_separator_get_tree (GMenuTreeSeparator *separator)
+{
+ g_return_val_if_fail (separator != NULL, NULL);
+
+ return g_object_ref (separator->item.tree);
+}
+
+/**
* gmenu_tree_alias_get_aliased_directory:
* @alias: alias
*
@@ -1275,7 +1356,8 @@ gmenu_tree_alias_get_aliased_entry (GMenuTreeAlias *alias)
}
static GMenuTreeDirectory *
-gmenu_tree_directory_new (GMenuTreeDirectory *parent,
+gmenu_tree_directory_new (GMenuTree *tree,
+ GMenuTreeDirectory *parent,
const char *name)
{
GMenuTreeDirectory *retval;
@@ -1285,6 +1367,7 @@ gmenu_tree_directory_new (GMenuTreeDirectory *parent,
retval->item.type = GMENU_TREE_ITEM_DIRECTORY;
retval->item.parent = parent;
retval->item.refcount = 1;
+ retval->item.tree = tree;
retval->name = g_strdup (name);
retval->directory_entry = NULL;
@@ -1364,6 +1447,7 @@ gmenu_tree_separator_new (GMenuTreeDirectory *parent)
retval->item.type = GMENU_TREE_ITEM_SEPARATOR;
retval->item.parent = parent;
retval->item.refcount = 1;
+ retval->item.tree = parent->item.tree;
return retval;
}
@@ -1387,6 +1471,7 @@ gmenu_tree_header_new (GMenuTreeDirectory *parent,
retval->item.type = GMENU_TREE_ITEM_HEADER;
retval->item.parent = parent;
retval->item.refcount = 1;
+ retval->item.tree = parent->item.tree;
retval->directory = gmenu_tree_item_ref (directory);
@@ -1419,6 +1504,7 @@ gmenu_tree_alias_new (GMenuTreeDirectory *parent,
retval->item.type = GMENU_TREE_ITEM_ALIAS;
retval->item.parent = parent;
retval->item.refcount = 1;
+ retval->item.tree = parent->item.tree;
retval->directory = gmenu_tree_item_ref (directory);
if (item->type != GMENU_TREE_ITEM_ALIAS)
@@ -1466,6 +1552,7 @@ gmenu_tree_entry_new (GMenuTreeDirectory *parent,
retval->item.type = GMENU_TREE_ITEM_ENTRY;
retval->item.parent = parent;
retval->item.refcount = 1;
+ retval->item.tree = parent->item.tree;
retval->desktop_entry = desktop_entry_ref (desktop_entry);
retval->desktop_file_id = g_strdup (desktop_file_id);
@@ -3254,7 +3341,7 @@ process_layout (GMenuTree *tree,
g_assert (menu_layout_node_get_type (layout) == MENU_LAYOUT_NODE_MENU);
g_assert (menu_layout_node_menu_get_name (layout) != NULL);
- directory = gmenu_tree_directory_new (parent,
+ directory = gmenu_tree_directory_new (tree, parent,
menu_layout_node_menu_get_name (layout));
menu_verbose ("=== Menu name = %s ===\n", directory->name);
diff --git a/libmenu/gmenu-tree.h b/libmenu/gmenu-tree.h
index 3b3a12d..06e653e 100644
--- a/libmenu/gmenu-tree.h
+++ b/libmenu/gmenu-tree.h
@@ -112,6 +112,7 @@ const char *gmenu_tree_directory_get_comment (GMenuTreeDirectory *dire
GIcon *gmenu_tree_directory_get_icon (GMenuTreeDirectory *directory);
const char *gmenu_tree_directory_get_desktop_file_path (GMenuTreeDirectory *directory);
const char *gmenu_tree_directory_get_menu_id (GMenuTreeDirectory *directory);
+GMenuTree *gmenu_tree_directory_get_tree (GMenuTreeDirectory *directory);
gboolean gmenu_tree_directory_get_is_nodisplay (GMenuTreeDirectory *directory);
@@ -133,6 +134,7 @@ char *gmenu_tree_directory_make_path (GMenuTreeDirectory *directory,
GDesktopAppInfo *gmenu_tree_entry_get_app_info (GMenuTreeEntry *entry);
GMenuTreeDirectory *gmenu_tree_entry_get_parent (GMenuTreeEntry *entry);
+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);
@@ -141,11 +143,15 @@ gboolean gmenu_tree_entry_get_is_excluded (GMenuTreeEntry *entry);
gboolean gmenu_tree_entry_get_is_unallocated (GMenuTreeEntry *entry);
GMenuTreeDirectory *gmenu_tree_header_get_directory (GMenuTreeHeader *header);
+GMenuTree *gmenu_tree_header_get_tree (GMenuTreeHeader *header);
GMenuTreeDirectory *gmenu_tree_alias_get_directory (GMenuTreeAlias *alias);
GMenuTreeItemType gmenu_tree_alias_get_aliased_item_type (GMenuTreeAlias *alias);
GMenuTreeDirectory *gmenu_tree_alias_get_aliased_directory (GMenuTreeAlias *alias);
GMenuTreeEntry *gmenu_tree_alias_get_aliased_entry (GMenuTreeAlias *alias);
+GMenuTree *gmenu_tree_alias_get_tree (GMenuTreeAlias *alias);
+
+GMenuTree *gmenu_tree_separator_get_tree (GMenuTreeSeparator *separator);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]