container: Don't create too-large clips

gdk_rectangle_union will happily add all the worlds pixels
to the union if the initial rectangle is initialized to all
zeros. Therefore, explicitly check for an empty rectangle
before calling it.
This commit is contained in:
Matthias Clasen 2016-01-20 13:42:45 -05:00
parent 51f05a00ae
commit da31eb4f64

View File

@ -3686,8 +3686,9 @@ gtk_container_should_propagate_draw (GtkContainer *container,
static void static void
union_with_clip (GtkWidget *widget, union_with_clip (GtkWidget *widget,
gpointer clip) gpointer data)
{ {
GdkRectangle *clip = data;
GtkAllocation widget_clip; GtkAllocation widget_clip;
if (!gtk_widget_is_visible (widget) || if (!gtk_widget_is_visible (widget) ||
@ -3696,7 +3697,10 @@ union_with_clip (GtkWidget *widget,
gtk_widget_get_clip (widget, &widget_clip); gtk_widget_get_clip (widget, &widget_clip);
gdk_rectangle_union (&widget_clip, clip, clip); if (clip->width == 0 || clip->height == 0)
*clip = widget_clip;
else
gdk_rectangle_union (&widget_clip, clip, clip);
} }
void void