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.
This commit is contained in:
Benjamin Otte 2021-11-19 21:58:09 +01:00
parent e378dc4c28
commit 163616cc0a

View File

@ -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.