File hdy-flap-Use-natural-size-for-folding-instead-of-minimum.patch of Package gtk3

From: Alexander Mikhaylenko <alexm@gnome.org>
Date: Wed, 23 Dec 2020 16:33:24 +0500
Subject: hdy-flap: Use natural size for folding instead of minimum

See https://gitlab.gnome.org/GNOME/libhandy/-/issues/390#note_991319
---
 gtk/hdy-flap.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/gtk/hdy-flap.c b/gtk/hdy-flap.c
index 8735ad9..1b4504d 100644
--- a/gtk/hdy-flap.c
+++ b/gtk/hdy-flap.c
@@ -962,21 +962,29 @@ gtk_hdy_flap_size_allocate (GtkWidget     *widget,
                             alloc->x, alloc->y, alloc->width, alloc->height);
 
   if (self->fold_policy == GTK_HDY_FLAP_FOLD_POLICY_AUTO) {
-    GtkRequisition flap_min = { 0, 0 };
-    GtkRequisition content_min = { 0, 0 };
-    GtkRequisition separator_min = { 0, 0 };
+    GtkRequisition flap_size = { 0, 0 };
+    GtkRequisition content_size = { 0, 0 };
+    GtkRequisition separator_size = { 0, 0 };
+    gboolean flap_expand, content_expand;
+
+    flap_expand = gtk_widget_compute_expand (self->flap.widget, self->orientation);
+    content_expand = gtk_widget_compute_expand (self->content.widget, self->orientation);
 
     if (self->flap.widget)
-      gtk_widget_get_preferred_size (self->flap.widget, &flap_min, NULL);
+      gtk_widget_get_preferred_size (self->flap.widget,
+                                     content_expand ? &flap_size : NULL,
+                                     content_expand ? NULL : &flap_size);
     if (self->content.widget)
-      gtk_widget_get_preferred_size (self->content.widget, &content_min, NULL);
+      gtk_widget_get_preferred_size (self->content.widget,
+                                     flap_expand ? &content_size : NULL,
+                                     flap_expand ? NULL : &content_size);
     if (self->separator.widget)
-      gtk_widget_get_preferred_size (self->separator.widget, &separator_min, NULL);
+      gtk_widget_get_preferred_size (self->separator.widget, &separator_size, NULL);
 
     if (self->orientation == GTK_ORIENTATION_HORIZONTAL)
-      set_folded (self, alloc->width < content_min.width + flap_min.width + separator_min.width);
+      set_folded (self, alloc->width < content_size.width + flap_size.width + separator_size.width);
     else
-      set_folded (self, alloc->height < content_min.height + flap_min.height + separator_min.height);
+      set_folded (self, alloc->height < content_size.height + flap_size.height + separator_size.height);
   }
 
   compute_allocation (self,
openSUSE Build Service is sponsored by