[gtk/wip/otte/for-master: 43/46] sizerequest: Add a critical when for_size is too small




commit 163616cc0ada31ad667e8db7b22a6fa817021ebc
Author: Benjamin Otte <otte redhat com>
Date:   Fri Nov 19 21:58:09 2021 +0100

    sizerequest: Add a critical when for_size is too small
    
    It's not expensive to check it because we'll cache the dfault size
    request anyway, and people do it wrong a lot.
    As a bonus, don't do any return_if_fail(), just use the min size
    instead.

 gtk/gtksizerequest.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)
---
diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c
index a0f066b997..199bce2575 100644
--- a/gtk/gtksizerequest.c
+++ b/gtk/gtksizerequest.c
@@ -488,6 +488,18 @@ gtk_widget_measure (GtkWidget        *widget,
   g_return_if_fail (orientation == GTK_ORIENTATION_HORIZONTAL ||
                     orientation == GTK_ORIENTATION_VERTICAL);
 
+  if (for_size >= 0)
+    {
+      int min_opposite_size;
+      gtk_widget_measure (widget, OPPOSITE_ORIENTATION (orientation), -1, &min_opposite_size, NULL, NULL, 
NULL);
+      if (for_size < min_opposite_size)
+        {
+          g_critical ("gtk_widget_measure: assertion 'for_size >= minimum opposite size' failed for %s %p: 
%u >= %u",
+                      G_OBJECT_TYPE_NAME (widget), widget, for_size, min_opposite_size);
+          for_size = min_opposite_size;
+        }
+    }
+
   /* This is the main function that checks for a cached size and
    * possibly queries the widget class to compute the size if it's
    * not cached.


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