From 55faea104694599298a6ca1b9f2e7a1b46bad45a Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Tue, 7 Mar 2023 09:51:32 -0800 Subject: [PATCH] combobox: Avoid extra queue_resize() width-request already ensures it's above the minimum width, so avoid an extra queue_resize() when setting size request to (-1, -1). This is the same way as GtkDropDown works. This also unbreaks GtkComboBox after the recent allocation fix in 75a417e33708dab2bdb2f784a8952e085a12bf03. Incidentally, this also makes GtkComboBox actually resize its popup as intended (that was broken before). I don't think this is ultimately the final fix, sometimes I still get allocation warnings. But the proper fix will probably involve changing some more allocation machinery around popovers. This is good enough for now. --- gtk/deprecated/gtkcombobox.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/gtk/deprecated/gtkcombobox.c b/gtk/deprecated/gtkcombobox.c index 618f0780b7..1e76b38f41 100644 --- a/gtk/deprecated/gtkcombobox.c +++ b/gtk/deprecated/gtkcombobox.c @@ -366,7 +366,6 @@ gtk_combo_box_size_allocate (GtkWidget *widget, { GtkComboBox *combo_box = GTK_COMBO_BOX (widget); GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box); - int menu_width; gtk_widget_size_allocate (priv->box, &(GtkAllocation) { @@ -374,17 +373,8 @@ gtk_combo_box_size_allocate (GtkWidget *widget, width, height }, baseline); - gtk_widget_set_size_request (priv->popup_widget, -1, -1); - - if (priv->popup_fixed_width) - gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1, - &menu_width, NULL, NULL, NULL); - else - gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1, - NULL, &menu_width, NULL, NULL); - - gtk_widget_set_size_request (priv->popup_widget, - MAX (width, menu_width), -1); + gtk_widget_set_size_request (priv->popup_widget, width, -1); + gtk_widget_queue_resize (priv->popup_widget); gtk_popover_present (GTK_POPOVER (priv->popup_widget)); } -- 2.39.2