[gnome-menus] libmenu: Allow grabbing the parent from any GMenuTreeItem
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-menus] libmenu: Allow grabbing the parent from any GMenuTreeItem
- Date: Wed, 20 Jun 2012 23:01:16 +0000 (UTC)
commit d1beaf075f02281e28bb730f3e43dd15dfea2ef3
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Wed Jun 20 14:57:58 2012 -0400
libmenu: Allow grabbing the parent from any GMenuTreeItem
Oh how I wish we had real inheritance.
libmenu/gmenu-tree.c | 51 +++++++++++++++++++++++++++++++++++++++++++------
libmenu/gmenu-tree.h | 3 ++
2 files changed, 47 insertions(+), 7 deletions(-)
---
diff --git a/libmenu/gmenu-tree.c b/libmenu/gmenu-tree.c
index 53f5e1e..3e59c2c 100644
--- a/libmenu/gmenu-tree.c
+++ b/libmenu/gmenu-tree.c
@@ -846,6 +846,13 @@ gmenu_tree_invoke_monitors (GMenuTree *tree)
g_signal_emit (tree, gmenu_tree_signals[CHANGED], 0);
}
+static GMenuTreeDirectory *
+get_parent (GMenuTreeItem *item)
+{
+ g_return_val_if_fail (item != NULL, NULL);
+ return item->parent ? gmenu_tree_item_ref (item->parent) : NULL;
+}
+
/**
* gmenu_tree_directory_get_parent:
* @directory: a #GMenuTreeDirectory
@@ -855,10 +862,7 @@ gmenu_tree_invoke_monitors (GMenuTree *tree)
GMenuTreeDirectory *
gmenu_tree_directory_get_parent (GMenuTreeDirectory *directory)
{
- GMenuTreeItem *item = (GMenuTreeItem*)directory;
- g_return_val_if_fail (item != NULL, NULL);
-
- return item->parent ? gmenu_tree_item_ref (item->parent) : NULL;
+ return get_parent ((GMenuTreeItem *)directory);
}
/**
@@ -870,10 +874,43 @@ gmenu_tree_directory_get_parent (GMenuTreeDirectory *directory)
GMenuTreeDirectory *
gmenu_tree_entry_get_parent (GMenuTreeEntry *entry)
{
- GMenuTreeItem *item = (GMenuTreeItem*)entry;
- g_return_val_if_fail (item != NULL, NULL);
+ return get_parent ((GMenuTreeItem *)entry);
+}
- return item->parent ? gmenu_tree_item_ref (item->parent) : NULL;
+/**
+ * gmenu_tree_alias_get_parent:
+ * @alias: a #GMenuTreeAlias
+ *
+ * Returns: (transfer full): The parent directory, or %NULL if none
+ */
+GMenuTreeDirectory *
+gmenu_tree_alias_get_parent (GMenuTreeAlias *alias)
+{
+ return get_parent ((GMenuTreeItem *)alias);
+}
+
+/**
+ * gmenu_tree_header_get_parent:
+ * @header: a #GMenuTreeHeader
+ *
+ * Returns: (transfer full): The parent directory, or %NULL if none
+ */
+GMenuTreeDirectory *
+gmenu_tree_header_get_parent (GMenuTreeHeader *header)
+{
+ return get_parent ((GMenuTreeItem *)header);
+}
+
+/**
+ * gmenu_tree_separator_get_parent:
+ * @separator: a #GMenuTreeSeparator
+ *
+ * Returns: (transfer full): The parent directory, or %NULL if none
+ */
+GMenuTreeDirectory *
+gmenu_tree_separator_get_parent (GMenuTreeSeparator *separator)
+{
+ return get_parent ((GMenuTreeItem *)separator);
}
static void
diff --git a/libmenu/gmenu-tree.h b/libmenu/gmenu-tree.h
index db25572..4ccdb2b 100644
--- a/libmenu/gmenu-tree.h
+++ b/libmenu/gmenu-tree.h
@@ -145,14 +145,17 @@ 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_header_get_parent (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);
+GMenuTreeDirectory *gmenu_tree_alias_get_parent (GMenuTreeAlias *alias);
GMenuTree *gmenu_tree_separator_get_tree (GMenuTreeSeparator *separator);
+GMenuTreeDirectory *gmenu_tree_separator_get_parent (GMenuTreeSeparator *separator);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]