diff options
author | Ryan Lortie <desrt@desrt.ca> | 2014-04-28 14:20:08 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2014-04-28 14:14:42 -0400 |
commit | d930716daf0b04d01832658b21ba96898686c70e (patch) | |
tree | 355024ddfcb6514b2bcc6b8064cf4bdb296f2a05 /gtk/gtkmenutracker.c | |
parent | f6ee00769a9190ed95857dab9fc78f935b6645db (diff) | |
download | gtk+-d930716daf0b04d01832658b21ba96898686c70e.tar.gz |
GtkMenuTracker: add 'merge_sections' flag
Add the possibility of a GtkMenuTracker that performs no section
merging. Instead, it will report an item in the form of a separator for
subsections. It is then possible to get a separate tracker for the
subsection contents by using gtk_menu_tracker_new_for_item_link().
Diffstat (limited to 'gtk/gtkmenutracker.c')
-rw-r--r-- | gtk/gtkmenutracker.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gtk/gtkmenutracker.c b/gtk/gtkmenutracker.c index 87a6d2cb52..dc6e5eb19a 100644 --- a/gtk/gtkmenutracker.c +++ b/gtk/gtkmenutracker.c @@ -60,6 +60,7 @@ typedef struct _GtkMenuTrackerSection GtkMenuTrackerSection; struct _GtkMenuTracker { GtkActionObservable *observable; + gboolean merge_sections; GtkMenuTrackerInsertFunc insert_func; GtkMenuTrackerRemoveFunc remove_func; gpointer user_data; @@ -308,7 +309,8 @@ gtk_menu_tracker_add_items (GtkMenuTracker *tracker, submenu = g_menu_model_get_item_link (model, position + n_items, G_MENU_LINK_SECTION); g_assert (submenu != model); - if (submenu != NULL) + + if (submenu != NULL && tracker->merge_sections) { GtkMenuTrackerSection *subsection; gchar *action_namespace = NULL; @@ -340,7 +342,7 @@ gtk_menu_tracker_add_items (GtkMenuTracker *tracker, GtkMenuTrackerItem *item; item = _gtk_menu_tracker_item_new (tracker->observable, model, position + n_items, - section->action_namespace, FALSE); + section->action_namespace, submenu != NULL); /* In the case that the item may disappear we handle that by * treating the item that we just created as being its own @@ -540,6 +542,7 @@ GtkMenuTracker * gtk_menu_tracker_new (GtkActionObservable *observable, GMenuModel *model, gboolean with_separators, + gboolean merge_sections, const gchar *action_namespace, GtkMenuTrackerInsertFunc insert_func, GtkMenuTrackerRemoveFunc remove_func, @@ -548,6 +551,7 @@ gtk_menu_tracker_new (GtkActionObservable *observable, GtkMenuTracker *tracker; tracker = g_slice_new (GtkMenuTracker); + tracker->merge_sections = merge_sections; tracker->observable = g_object_ref (observable); tracker->insert_func = insert_func; tracker->remove_func = remove_func; @@ -562,6 +566,7 @@ gtk_menu_tracker_new (GtkActionObservable *observable, GtkMenuTracker * gtk_menu_tracker_new_for_item_link (GtkMenuTrackerItem *item, const gchar *link_name, + gboolean merge_sections, GtkMenuTrackerInsertFunc insert_func, GtkMenuTrackerRemoveFunc remove_func, gpointer user_data) @@ -574,7 +579,7 @@ gtk_menu_tracker_new_for_item_link (GtkMenuTrackerItem *item, namespace = _gtk_menu_tracker_item_get_link_namespace (item); tracker = gtk_menu_tracker_new (_gtk_menu_tracker_item_get_observable (item), submenu, - TRUE, namespace, insert_func, remove_func, user_data); + TRUE, merge_sections, namespace, insert_func, remove_func, user_data); g_object_unref (submenu); g_free (namespace); |