From 5c2697633cbc3c395aa44e8aaae1a838b385e74c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 27 Mar 2019 18:37:57 -0400 Subject: [PATCH] popover menu: Drop the submenu child property We are using the GtkWidget::name property instead. --- gtk/gtkpopovermenu.c | 104 ++++++------------------------------------- 1 file changed, 13 insertions(+), 91 deletions(-) diff --git a/gtk/gtkpopovermenu.c b/gtk/gtkpopovermenu.c index 2bfa67c944..241f02857d 100644 --- a/gtk/gtkpopovermenu.c +++ b/gtk/gtkpopovermenu.c @@ -35,10 +35,13 @@ * In this respect, GtkPopoverMenu is more flexible than popovers * that are created from a #GMenuModel with gtk_popover_new_from_model(). * - * To add a child as a submenu, set the #GtkPopoverMenu:submenu - * child property to the name of the submenu. To let the user open - * this submenu, add a #GtkModelButton whose #GtkModelButton:menu-name - * property is set to the name you've given to the submenu. + * To add a child as a submenu, use gtk_popover_menu_add_submenu(). + * To let the user open this submenu, add a #GtkModelButton whose + * #GtkModelButton:menu-name property is set to the name you've given + * to the submenu. + * + * To add a named submenu in a ui file, set the #GtkWidget:name property + * of the widget that you are adding as a child of the popover menu. * * By convention, the first child of a submenu should be a #GtkModelButton * to switch back to the parent menu. Such a button should use the @@ -75,6 +78,7 @@ * * True * 10 + * more * * * True @@ -90,9 +94,6 @@ * * * - * - * more - * * * * ]| @@ -114,10 +115,6 @@ enum { PROP_VISIBLE_SUBMENU = 1 }; -enum { - CHILD_PROP_SUBMENU = 1, -}; - G_DEFINE_TYPE (GtkPopoverMenu, gtk_popover_menu, GTK_TYPE_POPOVER) static void @@ -176,12 +173,14 @@ gtk_popover_menu_add (GtkContainer *container, { const char *name; - if (gtk_stack_get_child_by_name (GTK_STACK (stack), "main")) + if (gtk_widget_get_name (child)) + name = gtk_widget_get_name (child); + else if (gtk_stack_get_child_by_name (GTK_STACK (stack), "main")) name = "submenu"; else name = "main"; - gtk_stack_add_named (GTK_STACK (stack), child, name); + gtk_popover_menu_add_submenu (GTK_POPOVER_MENU (container), child, name); } } @@ -199,66 +198,6 @@ gtk_popover_menu_remove (GtkContainer *container, gtk_container_remove (GTK_CONTAINER (stack), child); } -static void -gtk_popover_menu_get_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - GtkWidget *stack; - - stack = gtk_bin_get_child (GTK_BIN (container)); - - if (child == stack) - return; - - switch (property_id) - { - case CHILD_PROP_SUBMENU: - { - gchar *name; - gtk_container_child_get (GTK_CONTAINER (stack), child, "name", &name, NULL); - g_value_set_string (value, name); - } - break; - - default: - GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); - break; - } -} - -static void -gtk_popover_menu_set_child_property (GtkContainer *container, - GtkWidget *child, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - GtkWidget *stack; - - stack = gtk_bin_get_child (GTK_BIN (container)); - - if (child == stack) - return; - - switch (property_id) - { - case CHILD_PROP_SUBMENU: - { - const gchar *name; - name = g_value_get_string (value); - gtk_container_child_set (GTK_CONTAINER (stack), child, "name", name, NULL); - } - break; - - default: - GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec); - break; - } -} - static void gtk_popover_menu_get_property (GObject *object, guint property_id, @@ -318,8 +257,6 @@ gtk_popover_menu_class_init (GtkPopoverMenuClass *klass) container_class->add = gtk_popover_menu_add; container_class->remove = gtk_popover_menu_remove; - container_class->set_child_property = gtk_popover_menu_set_child_property; - container_class->get_child_property = gtk_popover_menu_get_child_property; g_object_class_install_property (object_class, PROP_VISIBLE_SUBMENU, @@ -328,21 +265,6 @@ gtk_popover_menu_class_init (GtkPopoverMenuClass *klass) P_("The name of the visible submenu"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - - /** - * GtkPopoverMenu:submenu: - * - * The submenu child property specifies the name of the submenu - * If it is %NULL or "main", the child is used as the main menu, - * which is shown initially when the popover is mapped. - */ - gtk_container_class_install_child_property (container_class, - CHILD_PROP_SUBMENU, - g_param_spec_string ("submenu", - P_("Submenu"), - P_("The name of the submenu"), - NULL, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** @@ -400,7 +322,7 @@ gtk_popover_menu_add_submenu (GtkPopoverMenu *popover, { GtkWidget *stack; - stack = gtk_bin_get_child (GTK_BIN (object)); + stack = gtk_bin_get_child (GTK_BIN (popover)); gtk_stack_add_named (GTK_STACK (stack), submenu, name); }