[gtk+] frame: Fix horizontal size request



commit 41119057dda97549bf498cdf5787b8b98da541c7
Author: Timm Bäder <mail baedert org>
Date:   Fri Feb 26 14:07:49 2016 +0100

    frame: Fix horizontal size request
    
    We were adding the border gadget size and the label widget size in any
    case, but when calculating the width, we want the maximum of those two,
    not the sum.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=760482

 gtk/gtkframe.c |   33 ++++++++++++++-------------------
 1 files changed, 14 insertions(+), 19 deletions(-)
---
diff --git a/gtk/gtkframe.c b/gtk/gtkframe.c
index 3fcb641..56fb8c9 100644
--- a/gtk/gtkframe.c
+++ b/gtk/gtkframe.c
@@ -938,13 +938,23 @@ gtk_frame_measure (GtkCssGadget   *gadget,
   frame = GTK_FRAME (widget);
   priv = frame->priv;
 
+  gtk_css_gadget_get_preferred_size (priv->border_gadget,
+                                     orientation,
+                                     for_size,
+                                     &child_min,
+                                     &child_nat,
+                                     NULL, NULL);
+
+  *minimum = child_min;
+  *natural = child_nat;
+
   if (priv->label_widget && gtk_widget_get_visible (priv->label_widget))
     {
       if (orientation == GTK_ORIENTATION_HORIZONTAL)
         {
           gtk_widget_get_preferred_width (priv->label_widget, &child_min, &child_nat);
-          *minimum = child_min;
-          *natural = child_nat;
+          *minimum = MAX (child_min, *minimum);
+          *natural = MAX (child_nat, *natural);
         }
       else
         {
@@ -954,25 +964,10 @@ gtk_frame_measure (GtkCssGadget   *gadget,
           else
             gtk_widget_get_preferred_height (priv->label_widget, &child_min, &child_nat);
 
-          *minimum = child_min;
-          *natural = child_nat;
+          *minimum += child_min;
+          *natural += child_nat;
         }
     }
-  else
-    {
-      *minimum = 0;
-      *natural = 0;
-    }
-
-  gtk_css_gadget_get_preferred_size (priv->border_gadget,
-                                     orientation,
-                                     for_size,
-                                     &child_min,
-                                     &child_nat,
-                                     NULL, NULL);
-
-  *minimum += child_min;
-  *natural += child_nat;
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]