From ec5596ce20a7979923d82b432d688578bb311f28 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 16 Dec 2015 17:27:14 -0500 Subject: [PATCH] gadget: Warn if clip is not set This leads to hard-to-track-down drawing errors, so better warn explicitly about it. --- gtk/gtkcssgadget.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gtk/gtkcssgadget.c b/gtk/gtkcssgadget.c index 895855779d..a1e381e047 100644 --- a/gtk/gtkcssgadget.c +++ b/gtk/gtkcssgadget.c @@ -524,7 +524,8 @@ gtk_css_gadget_allocate (GtkCssGadget *gadget, GtkAllocation *out_clip) { GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget); - GtkAllocation content_allocation, content_clip; + GtkAllocation content_allocation; + GtkAllocation content_clip = { 0, 0, 0, 0 }; GtkBorder margin, border, padding, shadow, extents; GtkCssStyle *style; @@ -563,11 +564,16 @@ gtk_css_gadget_allocate (GtkCssGadget *gadget, GTK_CSS_GADGET_GET_CLASS (gadget)->allocate (gadget, &content_allocation, baseline, &content_clip); + if (content_clip.width == 0 || content_clip.height == 0) + g_warning ("GtkCssAllocateFunc did not set clip\n"); + _gtk_css_shadows_value_get_extents (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BOX_SHADOW), &shadow); + out_clip->x = allocation->x + margin.left - shadow.left; out_clip->y = allocation->y + margin.top - shadow.top; out_clip->width = allocation->width - margin.left - margin.right + shadow.left + shadow.right; out_clip->height = allocation->height - margin.top - margin.bottom + shadow.top + shadow.bottom; + gdk_rectangle_union (&content_clip, out_clip, out_clip); }