aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-05-26 17:18:29 -0500
committerTed Gould <ted@gould.cx>2010-05-26 17:18:29 -0500
commitdece0b82c06a7ad23d204c394341d50a64ba3b7b (patch)
tree9f443a39c2da259bcbd8890d524220ef5b2f7c3f
parenta02759840b6bd595a0f6871539acf68233b39a13 (diff)
downloadlibdbusmenu-dece0b82c06a7ad23d204c394341d50a64ba3b7b.tar.gz
libdbusmenu-dece0b82c06a7ad23d204c394341d50a64ba3b7b.tar.bz2
libdbusmenu-dece0b82c06a7ad23d204c394341d50a64ba3b7b.zip
Adding a small function to get the submenu of an item.
-rw-r--r--libdbusmenu-gtk/client.c23
-rw-r--r--libdbusmenu-gtk/client.h1
2 files changed, 24 insertions, 0 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c
index b13af6a..3bd0af6 100644
--- a/libdbusmenu-gtk/client.c
+++ b/libdbusmenu-gtk/client.c
@@ -423,6 +423,29 @@ dbusmenu_gtkclient_menuitem_get (DbusmenuGtkClient * client, DbusmenuMenuitem *
return GTK_MENU_ITEM(data);
}
+/**
+ dbusmenu_gtkclient_menuitem_get_submenu:
+ @client: A #DbusmenuGtkClient with the item in it.
+ @item: #DbusmenuMenuitem to get associated #GtkMenu on.
+
+ This grabs the submenu associated with the menuitem.
+
+ Return value: The #GtkMenu if there is one.
+*/
+GtkMenu *
+dbusmenu_gtkclient_menuitem_get_submenu (DbusmenuGtkClient * client, DbusmenuMenuitem * item)
+{
+ g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), NULL);
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(item), NULL);
+
+ gpointer data = g_object_get_data(G_OBJECT(item), data_menu);
+ if (data == NULL) {
+ return NULL;
+ }
+
+ return GTK_MENU(data);
+}
+
/* The base type handler that builds a plain ol'
GtkMenuItem to represent, well, the GtkMenuItem */
static gboolean
diff --git a/libdbusmenu-gtk/client.h b/libdbusmenu-gtk/client.h
index 4cfbdcf..7672bf7 100644
--- a/libdbusmenu-gtk/client.h
+++ b/libdbusmenu-gtk/client.h
@@ -77,6 +77,7 @@ struct _DbusmenuGtkClient {
GType dbusmenu_gtkclient_get_type (void);
DbusmenuGtkClient * dbusmenu_gtkclient_new (gchar * dbus_name, gchar * dbus_object);
GtkMenuItem * dbusmenu_gtkclient_menuitem_get (DbusmenuGtkClient * client, DbusmenuMenuitem * item);
+GtkMenu * dbusmenu_gtkclient_menuitem_get_submenu (DbusmenuGtkClient * client, DbusmenuMenuitem * item);
void dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * item, GtkMenuItem * gmi, DbusmenuMenuitem * parent);