[gtk+] sizerequest: Fix for_size adjustment



commit e7b3909fd13e441d29fca0ff866abdd31bb87b2c
Author: Timm Bäder <mail baedert org>
Date:   Wed Jan 17 15:42:01 2018 +0100

    sizerequest: Fix for_size adjustment
    
    We need to pull the proper size from the size request cache and adjust
    it accordingly.

 gtk/gtksizerequest.c |   30 +++++++++++++-----------------
 1 files changed, 13 insertions(+), 17 deletions(-)
---
diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c
index 3838e5c..2b8ec8f 100644
--- a/gtk/gtksizerequest.c
+++ b/gtk/gtksizerequest.c
@@ -154,7 +154,6 @@ gtk_widget_query_size_for_orientation (GtkWidget        *widget,
   if (!found_in_cache)
     {
       int adjusted_min, adjusted_natural;
-      int adjusted_for_size = for_size;
       int reported_min_size = 0;
       int reported_nat_size = 0;
 
@@ -188,29 +187,26 @@ gtk_widget_query_size_for_orientation (GtkWidget        *widget,
         }
       else
         {
-          int dummy = 0;
+          int adjusted_for_size;
           int minimum_for_size = 0;
           int natural_for_size = 0;
+          int dummy = 0;
 
-          /* Pull the base natural size from the cache as it's needed to adjust
+          /* Pull the minimum for_size from the cache as it's needed to adjust
            * the proposed 'for_size' */
-          widget_class->measure (widget, OPPOSITE_ORIENTATION (orientation), -1,
-                                 &minimum_for_size, &natural_for_size, &dummy, &dummy);
-
-          gtk_widget_adjust_size_allocation (widget,
-                                             OPPOSITE_ORIENTATION (orientation),
-                                             &minimum_for_size,
-                                             &natural_for_size,
-                                             &dummy,
-                                             &adjusted_for_size);
-
-          /* adjusted_for_size now without widget margins */
-          adjusted_for_size -= css_extra_for_size;
+          gtk_widget_measure (widget, OPPOSITE_ORIENTATION (orientation), -1,
+                              &minimum_for_size, &natural_for_size, NULL, NULL);
 
           /* TODO: Warn if the given for_size is too small? */
+          if (for_size < MAX (minimum_for_size, css_min_for_size))
+            for_size = MAX (minimum_for_size, css_min_for_size);
+
+          adjusted_for_size = for_size;
+          gtk_widget_adjust_size_allocation (widget, OPPOSITE_ORIENTATION (orientation),
+                                             &for_size, &natural_for_size,
+                                             &dummy, &adjusted_for_size);
 
-          if (adjusted_for_size < MAX (minimum_for_size, css_min_for_size))
-            adjusted_for_size = MAX (minimum_for_size, css_min_for_size);
+          adjusted_for_size -= css_extra_for_size;
 
           push_recursion_check (widget, orientation);
           widget_class->measure (widget,


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