aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-05-19 00:14:07 +0200
committerTed Gould <ted@canonical.com>2009-05-19 00:14:07 +0200
commit6faaaaf2a55589832d0c692e13fd8da25cb2dfc9 (patch)
tree71bbcf91084daf6f256fc44ff076439a692b1e23 /libdbusmenu-glib
parent749d436792f990048a66273e350211d2b8fd5de9 (diff)
downloadlibdbusmenu-6faaaaf2a55589832d0c692e13fd8da25cb2dfc9.tar.gz
libdbusmenu-6faaaaf2a55589832d0c692e13fd8da25cb2dfc9.tar.bz2
libdbusmenu-6faaaaf2a55589832d0c692e13fd8da25cb2dfc9.zip
A function to copy the properties off of a menuitem.
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r--libdbusmenu-glib/menuitem.c35
-rw-r--r--libdbusmenu-glib/menuitem.h1
2 files changed, 36 insertions, 0 deletions
diff --git a/libdbusmenu-glib/menuitem.c b/libdbusmenu-glib/menuitem.c
index 6145ba2..fa848d7 100644
--- a/libdbusmenu-glib/menuitem.c
+++ b/libdbusmenu-glib/menuitem.c
@@ -621,6 +621,41 @@ dbusmenu_menuitem_properties_list (DbusmenuMenuitem * mi)
return g_hash_table_get_keys(priv->properties);
}
+static void
+copy_helper (gpointer in_key, gpointer in_value, gpointer in_data)
+{
+ GHashTable * table = (GHashTable *)in_data;
+ g_hash_table_insert(table, in_key, in_value);
+ return;
+}
+
+/**
+ dbusmenu_menuitem_properties_copy:
+ @mi: #DbusmenuMenuitem that we're interested in the properties of
+
+ This function takes the properties of a #DbusmenuMenuitem
+ and puts them into a #GHashTable that is referenced by the
+ key of a string and has the value of a string. The hash
+ table may not have any entries if there aren't any or there
+ is an error in processing. It is the caller's responsibility
+ to destroy the created #GHashTable.
+
+ Return value: A brand new #GHashTable that contains all of the
+ properties that are on this #DbusmenuMenuitem @mi.
+*/
+GHashTable *
+dbusmenu_menuitem_properties_copy (DbusmenuMenuitem * mi)
+{
+ GHashTable * ret = g_hash_table_new(g_str_hash, g_str_equal);
+
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(mi), ret);
+
+ DbusmenuMenuitemPrivate * priv = DBUSMENU_MENUITEM_GET_PRIVATE(mi);
+ g_hash_table_foreach(priv->properties, copy_helper, ret);
+
+ return ret;
+}
+
/**
dbusmenu_menuitem_buildxml:
@mi: #DbusmenuMenuitem to represent in XML
diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h
index f820a7a..3f3e97c 100644
--- a/libdbusmenu-glib/menuitem.h
+++ b/libdbusmenu-glib/menuitem.h
@@ -116,6 +116,7 @@ gboolean dbusmenu_menuitem_property_set (DbusmenuMenuitem * mi, const gchar * pr
const gchar * dbusmenu_menuitem_property_get (DbusmenuMenuitem * mi, const gchar * property);
gboolean dbusmenu_menuitem_property_exist (DbusmenuMenuitem * mi, const gchar * property);
GList * dbusmenu_menuitem_properties_list (DbusmenuMenuitem * mi) G_GNUC_WARN_UNUSED_RESULT;
+GHashTable * dbusmenu_menuitem_properties_copy (DbusmenuMenuitem * mi);
void dbusmenu_menuitem_buildxml (DbusmenuMenuitem * mi, GPtrArray * array);
void dbusmenu_menuitem_foreach (DbusmenuMenuitem * mi, void (*func) (DbusmenuMenuitem * mi, gpointer data), gpointer data);