From 8f1a2820b7f9cc1b6ed850894e4230d7b72e119f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 24 Aug 2023 10:39:04 -0400 Subject: [PATCH] =?utf8?q?Revert=20"PopoverMenu:=20Make=20:flags=20a=20pro?= =?utf8?q?perty=20for=20use=20in=20UI=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This reverts commit acd874ec5507f45ad22de7a91478433d27f640a4. This adds new API, therefore not suitable for 4.12. --- gtk/gtkenums.h | 13 ------ gtk/gtkpopovermenu.c | 104 ++++++------------------------------------- gtk/gtkpopovermenu.h | 19 +++++--- 3 files changed, 26 insertions(+), 110 deletions(-) diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h index 10543c4cb3..bcc1373a6f 100644 --- a/gtk/gtkenums.h +++ b/gtk/gtkenums.h @@ -1728,18 +1728,5 @@ typedef enum { /*< prefix=GTK_ACCESSIBLE_SORT >*/ GTK_ACCESSIBLE_SORT_OTHER } GtkAccessibleSort; -/** - * GtkPopoverMenuFlags: - * @GTK_POPOVER_MENU_NESTED: Create submenus as nested - * popovers. Without this flag, submenus are created as - * sliding pages that replace the main menu. - * - * Flags that affect how [class@Gtk.PopoverMenu] widgets built from - * a [class@Gio.MenuModel] are created and displayed. - */ -typedef enum { /*< prefix=GTK_POPOVER_MENU >*/ - GTK_POPOVER_MENU_NESTED = 1 << 0 -} GtkPopoverMenuFlags; - G_END_DECLS diff --git a/gtk/gtkpopovermenu.c b/gtk/gtkpopovermenu.c index b5b05065a1..52951f65aa 100644 --- a/gtk/gtkpopovermenu.c +++ b/gtk/gtkpopovermenu.c @@ -38,6 +38,7 @@ #include "gtkscrolledwindow.h" #include "gtkviewport.h" + /** * GtkPopoverMenu: * @@ -49,7 +50,6 @@ * `GtkPopoverMenu` treats its children like menus and allows switching * between them. It can open submenus as traditional, nested submenus, * or in a more touch-friendly sliding fashion. - * The property [property@Gtk.PopoverMenu:flags] controls this appearance. * * `GtkPopoverMenu` is meant to be used primarily with menu models, * using [ctor@Gtk.PopoverMenu.new_from_model]. If you need to put @@ -173,8 +173,7 @@ struct _GtkPopoverMenuClass enum { PROP_VISIBLE_SUBMENU = 1, - PROP_MENU_MODEL, - PROP_FLAGS + PROP_MENU_MODEL }; static void gtk_popover_menu_buildable_iface_init (GtkBuildableIface *iface); @@ -411,10 +410,6 @@ gtk_popover_menu_get_property (GObject *object, g_value_set_object (value, gtk_popover_menu_get_menu_model (menu)); break; - case PROP_FLAGS: - g_value_set_flags (value, gtk_popover_menu_get_flags (menu)); - break; - default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -439,10 +434,6 @@ gtk_popover_menu_set_property (GObject *object, gtk_popover_menu_set_menu_model (menu, g_value_get_object (value)); break; - case PROP_FLAGS: - gtk_popover_menu_set_flags (menu, g_value_get_flags (value)); - break; - default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -524,6 +515,7 @@ gtk_popover_menu_focus (GtkWidget *widget, return FALSE; } + static void add_tab_bindings (GtkWidgetClass *widget_class, GdkModifierType modifiers, @@ -624,23 +616,6 @@ gtk_popover_menu_class_init (GtkPopoverMenuClass *klass) G_TYPE_MENU_MODEL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - /** - * GtkPopoverMenu:flags: (attributes org.gtk.Property.get=gtk_popover_menu_get_flags org.gtk.Property.set=gtk_popover_menu_set_flags) - * - * The flags that @popover uses to create/display a menu from its model. - * - * If a model is set and the flags change, contents are rebuilt, so if setting - * properties individually, set flags before model to avoid a redundant rebuild. - * - * Since: 4.14 - */ - g_object_class_install_property (object_class, - PROP_FLAGS, - g_param_spec_flags ("flags", NULL, NULL, - GTK_TYPE_POPOVER_MENU_FLAGS, 0, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS - | G_PARAM_EXPLICIT_NOTIFY)); - add_arrow_bindings (widget_class, GDK_KEY_Up, GTK_DIR_UP); add_arrow_bindings (widget_class, GDK_KEY_Down, GTK_DIR_DOWN); add_arrow_bindings (widget_class, GDK_KEY_Left, GTK_DIR_LEFT); @@ -690,20 +665,6 @@ gtk_popover_menu_buildable_iface_init (GtkBuildableIface *iface) iface->add_child = gtk_popover_menu_buildable_add_child; } -static void -gtk_popover_menu_rebuild_contents (GtkPopoverMenu *popover) -{ - GtkWidget *stack; - GtkWidget *child; - - stack = gtk_popover_menu_get_stack (popover); - while ((child = gtk_widget_get_first_child (stack))) - gtk_stack_remove (GTK_STACK (stack), child); - - if (popover->model) - gtk_menu_section_box_new_toplevel (popover, popover->model, popover->flags); -} - /** * gtk_popover_menu_new: * @@ -814,7 +775,7 @@ gtk_popover_menu_new_from_model_full (GMenuModel *model, g_return_val_if_fail (model == NULL || G_IS_MENU_MODEL (model), NULL); popover = gtk_popover_menu_new (); - gtk_popover_menu_set_flags (GTK_POPOVER_MENU (popover), flags); + GTK_POPOVER_MENU (popover)->flags = flags; gtk_popover_menu_set_menu_model (GTK_POPOVER_MENU (popover), model); return popover; @@ -840,39 +801,18 @@ gtk_popover_menu_set_menu_model (GtkPopoverMenu *popover, if (g_set_object (&popover->model, model)) { - gtk_popover_menu_rebuild_contents (popover); - g_object_notify (G_OBJECT (popover), "menu-model"); - } -} + GtkWidget *stack; + GtkWidget *child; -/** - * gtk_popover_menu_set_flags: (attributes org.gtk.Method.set_property=flags) - * @popover: a `GtkPopoverMenu` - * @flags: a set of `GtkPopoverMenuFlags` - * - * Sets the flags that @popover uses to create/display a menu from its model. - * - * If a model is set and the flags change, contents are rebuilt, so if setting - * properties individually, set flags before model to avoid a redundant rebuild. - * - * Since: 4.14 - */ -void -gtk_popover_menu_set_flags (GtkPopoverMenu *popover, - GtkPopoverMenuFlags flags) -{ - g_return_if_fail (GTK_IS_POPOVER_MENU (popover)); - - if (popover->flags == flags) - return; - - popover->flags = flags; + stack = gtk_popover_menu_get_stack (popover); + while ((child = gtk_widget_get_first_child (stack))) + gtk_stack_remove (GTK_STACK (stack), child); - /* This shouldn’t happen IRL, but notify test unsets :child, so dodge error */ - if (gtk_popover_get_child (GTK_POPOVER (popover)) != NULL) - gtk_popover_menu_rebuild_contents (popover); + if (model) + gtk_menu_section_box_new_toplevel (popover, model, popover->flags); - g_object_notify (G_OBJECT (popover), "flags"); + g_object_notify (G_OBJECT (popover), "menu-model"); + } } /** @@ -891,24 +831,6 @@ gtk_popover_menu_get_menu_model (GtkPopoverMenu *popover) return popover->model; } -/** - * gtk_popover_menu_get_flags: (attributes org.gtk.Method.get_property=flags) - * @popover: a `GtkPopoverMenu` - * - * Returns the flags that @popover uses to create/display a menu from its model. - * - * Returns: the `GtkPopoverMenuFlags` - * - * Since: 4.14 - */ -GtkPopoverMenuFlags -gtk_popover_menu_get_flags (GtkPopoverMenu *popover) -{ - g_return_val_if_fail (GTK_IS_POPOVER_MENU (popover), 0); - - return popover->flags; -} - /** * gtk_popover_menu_add_child: * @popover: a `GtkPopoverMenu` diff --git a/gtk/gtkpopovermenu.h b/gtk/gtkpopovermenu.h index 83354405d5..003d2da888 100644 --- a/gtk/gtkpopovermenu.h +++ b/gtk/gtkpopovermenu.h @@ -37,6 +37,19 @@ GType gtk_popover_menu_get_type (void) G_GNUC_CONST; GDK_AVAILABLE_IN_ALL GtkWidget * gtk_popover_menu_new_from_model (GMenuModel *model); +/** + * GtkPopoverMenuFlags: + * @GTK_POPOVER_MENU_NESTED: Create submenus as nested + * popovers. Without this flag, submenus are created as + * sliding pages that replace the main menu. + * + * Flags that affect how popover menus are created from + * a menu model. + */ +typedef enum { + GTK_POPOVER_MENU_NESTED = 1 << 0 +} GtkPopoverMenuFlags; + GDK_AVAILABLE_IN_ALL GtkWidget * gtk_popover_menu_new_from_model_full (GMenuModel *model, GtkPopoverMenuFlags flags); @@ -47,12 +60,6 @@ void gtk_popover_menu_set_menu_model (GtkPopoverMenu *popover, GDK_AVAILABLE_IN_ALL GMenuModel *gtk_popover_menu_get_menu_model (GtkPopoverMenu *popover); -GDK_AVAILABLE_IN_4_14 -void gtk_popover_menu_set_flags (GtkPopoverMenu *popover, - GtkPopoverMenuFlags flags); -GDK_AVAILABLE_IN_4_14 -GtkPopoverMenuFlags gtk_popover_menu_get_flags (GtkPopoverMenu *popover); - GDK_AVAILABLE_IN_ALL gboolean gtk_popover_menu_add_child (GtkPopoverMenu *popover, GtkWidget *child, -- 2.30.2