[gtk+/wip/desrt/popover-iconic: 3/10] GtkMenuTracker: don't specialise "submenu" link
- From: Ryan Lortie <desrt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/desrt/popover-iconic: 3/10] GtkMenuTracker: don't specialise "submenu" link
- Date: Mon, 28 Apr 2014 16:15:45 +0000 (UTC)
commit 4408bfe1dad276127454b97084237def9ce76728
Author: Ryan Lortie <desrt desrt ca>
Date: Mon Apr 28 14:01:35 2014 +0200
GtkMenuTracker: don't specialise "submenu" link
We have some API in GtkMenuTracker and GtkMenuTrackerItem that is
specifically designed to deal with submenus.
Generalise these APIs to take a 'link_name' parameter that we always
give as G_MENU_SUBMENU for now. In the future, this will allow creating
trackers for other types of links, such as sections.
gtk/gtkmenushell.c | 11 ++++++-----
gtk/gtkmenutracker.c | 13 +++++++------
gtk/gtkmenutracker.h | 3 ++-
gtk/gtkmenutrackeritem.c | 18 +++++++-----------
gtk/gtkmenutrackeritem.h | 8 +++++---
gtk/gtkpopover.c | 6 ++++--
6 files changed, 31 insertions(+), 28 deletions(-)
---
diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c
index 7e2dbe7..6626a0e 100644
--- a/gtk/gtkmenushell.c
+++ b/gtk/gtkmenushell.c
@@ -2057,7 +2057,7 @@ gtk_menu_shell_tracker_insert_func (GtkMenuTrackerItem *item,
gtk_widget_show (widget);
}
- else if (gtk_menu_tracker_item_get_has_submenu (item))
+ else if (gtk_menu_tracker_item_get_has_link (item, G_MENU_LINK_SUBMENU))
{
GtkMenuShell *submenu;
@@ -2070,10 +2070,11 @@ gtk_menu_shell_tracker_insert_func (GtkMenuTrackerItem *item,
* prevent arbitrary recursion depth. We could also do it
* lazy...
*/
- submenu->priv->tracker = gtk_menu_tracker_new_for_item_submenu (item,
- gtk_menu_shell_tracker_insert_func,
- gtk_menu_shell_tracker_remove_func,
- submenu);
+ submenu->priv->tracker = gtk_menu_tracker_new_for_item_link (item,
+ G_MENU_LINK_SUBMENU,
+ gtk_menu_shell_tracker_insert_func,
+ gtk_menu_shell_tracker_remove_func,
+ submenu);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (widget), GTK_WIDGET (submenu));
if (gtk_menu_tracker_item_get_should_request_show (item))
diff --git a/gtk/gtkmenutracker.c b/gtk/gtkmenutracker.c
index ee6f8b0..87a6d2c 100644
--- a/gtk/gtkmenutracker.c
+++ b/gtk/gtkmenutracker.c
@@ -560,17 +560,18 @@ gtk_menu_tracker_new (GtkActionObservable *observable,
}
GtkMenuTracker *
-gtk_menu_tracker_new_for_item_submenu (GtkMenuTrackerItem *item,
- GtkMenuTrackerInsertFunc insert_func,
- GtkMenuTrackerRemoveFunc remove_func,
- gpointer user_data)
+gtk_menu_tracker_new_for_item_link (GtkMenuTrackerItem *item,
+ const gchar *link_name,
+ GtkMenuTrackerInsertFunc insert_func,
+ GtkMenuTrackerRemoveFunc remove_func,
+ gpointer user_data)
{
GtkMenuTracker *tracker;
GMenuModel *submenu;
gchar *namespace;
- submenu = _gtk_menu_tracker_item_get_submenu (item);
- namespace = _gtk_menu_tracker_item_get_submenu_namespace (item);
+ submenu = _gtk_menu_tracker_item_get_link (item, link_name);
+ 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);
diff --git a/gtk/gtkmenutracker.h b/gtk/gtkmenutracker.h
index a025586..6d9d6c8 100644
--- a/gtk/gtkmenutracker.h
+++ b/gtk/gtkmenutracker.h
@@ -40,7 +40,8 @@ GtkMenuTracker * gtk_menu_tracker_new (GtkActi
GtkMenuTrackerRemoveFunc
remove_func,
gpointer
user_data);
-GtkMenuTracker * gtk_menu_tracker_new_for_item_submenu (GtkMenuTrackerItem *item,
+GtkMenuTracker * gtk_menu_tracker_new_for_item_link (GtkMenuTrackerItem *item,
+ const gchar *link_name,
GtkMenuTrackerInsertFunc
insert_func,
GtkMenuTrackerRemoveFunc
remove_func,
gpointer
user_data);
diff --git a/gtk/gtkmenutrackeritem.c b/gtk/gtkmenutrackeritem.c
index 549e979..71ed0a8 100644
--- a/gtk/gtkmenutrackeritem.c
+++ b/gtk/gtkmenutrackeritem.c
@@ -106,7 +106,6 @@ struct _GtkMenuTrackerItem
enum {
PROP_0,
PROP_IS_SEPARATOR,
- PROP_HAS_SUBMENU,
PROP_LABEL,
PROP_ICON,
PROP_SENSITIVE,
@@ -160,9 +159,6 @@ 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;
@@ -221,8 +217,6 @@ 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] =
@@ -559,11 +553,12 @@ gtk_menu_tracker_item_get_is_separator (GtkMenuTrackerItem *self)
* for #GtkMenuTrackerItem.
*/
gboolean
-gtk_menu_tracker_item_get_has_submenu (GtkMenuTrackerItem *self)
+gtk_menu_tracker_item_get_has_link (GtkMenuTrackerItem *self,
+ const gchar *link_name)
{
GMenuModel *link;
- link = g_menu_item_get_link (self->item, G_MENU_LINK_SUBMENU);
+ link = g_menu_item_get_link (self->item, link_name);
if (link)
{
@@ -652,13 +647,14 @@ gtk_menu_tracker_item_get_special (GtkMenuTrackerItem *self)
}
GMenuModel *
-_gtk_menu_tracker_item_get_submenu (GtkMenuTrackerItem *self)
+_gtk_menu_tracker_item_get_link (GtkMenuTrackerItem *self,
+ const gchar *link_name)
{
- return g_menu_item_get_link (self->item, "submenu");
+ return g_menu_item_get_link (self->item, link_name);
}
gchar *
-_gtk_menu_tracker_item_get_submenu_namespace (GtkMenuTrackerItem *self)
+_gtk_menu_tracker_item_get_link_namespace (GtkMenuTrackerItem *self)
{
const gchar *namespace;
diff --git a/gtk/gtkmenutrackeritem.h b/gtk/gtkmenutrackeritem.h
index 859022d..4164984 100644
--- a/gtk/gtkmenutrackeritem.h
+++ b/gtk/gtkmenutrackeritem.h
@@ -54,7 +54,8 @@ GtkActionObservable * _gtk_menu_tracker_item_get_observable (GtkMenu
gboolean gtk_menu_tracker_item_get_is_separator (GtkMenuTrackerItem *self);
-gboolean gtk_menu_tracker_item_get_has_submenu (GtkMenuTrackerItem *self);
+gboolean gtk_menu_tracker_item_get_has_link (GtkMenuTrackerItem *self,
+ const gchar *link_name);
const gchar * gtk_menu_tracker_item_get_label (GtkMenuTrackerItem *self);
@@ -68,9 +69,10 @@ gboolean gtk_menu_tracker_item_get_toggled (GtkMenu
const gchar * gtk_menu_tracker_item_get_accel (GtkMenuTrackerItem *self);
-GMenuModel * _gtk_menu_tracker_item_get_submenu (GtkMenuTrackerItem *self);
+GMenuModel * _gtk_menu_tracker_item_get_link (GtkMenuTrackerItem *self,
+ const gchar *link_name);
-gchar * _gtk_menu_tracker_item_get_submenu_namespace (GtkMenuTrackerItem *self);
+gchar * _gtk_menu_tracker_item_get_link_namespace (GtkMenuTrackerItem *self);
gboolean gtk_menu_tracker_item_may_disappear (GtkMenuTrackerItem *self);
diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c
index d9ce632..77f414b 100644
--- a/gtk/gtkpopover.c
+++ b/gtk/gtkpopover.c
@@ -2039,7 +2039,7 @@ gtk_popover_tracker_insert_func (GtkMenuTrackerItem *item,
gtk_widget_show (widget);
}
}
- else if (gtk_menu_tracker_item_get_has_submenu (item))
+ else if (gtk_menu_tracker_item_get_has_link (item, G_MENU_LINK_SUBMENU))
{
GtkMenuTracker *tracker;
GtkWidget *child;
@@ -2084,7 +2084,9 @@ gtk_popover_tracker_insert_func (GtkMenuTrackerItem *item,
gtk_widget_set_halign (content, GTK_ALIGN_FILL);
gtk_widget_show (content);
gtk_container_add (GTK_CONTAINER (child), content);
- tracker = gtk_menu_tracker_new_for_item_submenu (item, gtk_popover_tracker_insert_func,
gtk_popover_tracker_remove_func, content);
+ tracker = gtk_menu_tracker_new_for_item_link (item, G_MENU_LINK_SUBMENU,
+ gtk_popover_tracker_insert_func,
+ gtk_popover_tracker_remove_func, content);
g_object_set_data_full (G_OBJECT (widget), "submenutracker", tracker,
(GDestroyNotify)gtk_menu_tracker_free);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]