diff options
author | Ryan Lortie <desrt@desrt.ca> | 2013-05-10 14:45:27 -0400 |
---|---|---|
committer | Ryan Lortie <desrt@desrt.ca> | 2013-05-10 14:52:59 -0400 |
commit | 26e5e44dc6bb813220e8b08f226b3a57dfad9782 (patch) | |
tree | e4376d28b6aa1134f842278e1da39134f1ecca2f /gtk/gtkmenutrackeritem.c | |
parent | c2b9d3f5db757418659a753c6545595437c8c8eb (diff) | |
download | gtk+-26e5e44dc6bb813220e8b08f226b3a57dfad9782.tar.gz |
GtkMenuTracker: add new_from_item_submenu()
Creates a menu tracker for the submenu of an existing item, filling in
about half of the parameters for the new tracker from the correct values
in the menuitem.
Add also a "has-submenu" boolean property so implementations can just
use this to check if they should do the submenu, without having to
handle a GMenuModel at all.
Diffstat (limited to 'gtk/gtkmenutrackeritem.c')
-rw-r--r-- | gtk/gtkmenutrackeritem.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gtk/gtkmenutrackeritem.c b/gtk/gtkmenutrackeritem.c index df9ef85b7a..ce80223fb3 100644 --- a/gtk/gtkmenutrackeritem.c +++ b/gtk/gtkmenutrackeritem.c @@ -19,6 +19,7 @@ struct _GtkMenuTrackerItem enum { PROP_0, PROP_IS_SEPARATOR, + PROP_HAS_SUBMENU, PROP_LABEL, PROP_ICON, PROP_SENSITIVE, @@ -73,6 +74,9 @@ gtk_menu_tracker_item_get_property (GObject *object, case PROP_IS_SEPARATOR: g_value_set_boolean (value, gtk_menu_tracker_item_get_is_separator (self)); break; + case PROP_HAS_SUBMENU: + g_value_set_boolean (value, gtk_menu_tracker_item_get_has_submenu (self)); + break; case PROP_LABEL: g_value_set_string (value, gtk_menu_tracker_item_get_label (self)); break; @@ -134,6 +138,8 @@ gtk_menu_tracker_item_class_init (GtkMenuTrackerItemClass *class) gtk_menu_tracker_item_pspecs[PROP_IS_SEPARATOR] = g_param_spec_boolean ("is-separator", "", "", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE); + gtk_menu_tracker_item_pspecs[PROP_HAS_SUBMENU] = + g_param_spec_boolean ("has-submenu", "", "", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE); gtk_menu_tracker_item_pspecs[PROP_LABEL] = g_param_spec_string ("label", "", "", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE); gtk_menu_tracker_item_pspecs[PROP_ICON] = @@ -382,6 +388,22 @@ gtk_menu_tracker_item_get_is_separator (GtkMenuTrackerItem *self) return self->is_separator; } +gboolean +gtk_menu_tracker_item_get_has_submenu (GtkMenuTrackerItem *self) +{ + GMenuModel *link; + + link = g_menu_item_get_link (self->item, G_MENU_LINK_SUBMENU); + + if (link) + { + g_object_unref (link); + return TRUE; + } + else + return FALSE; +} + const gchar * gtk_menu_tracker_item_get_label (GtkMenuTrackerItem *self) { |