diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c index 4bb8547738..f1acf9a13b 100644 --- a/gtk/gtkcssstylepropertyimpl.c +++ b/gtk/gtkcssstylepropertyimpl.c @@ -1013,7 +1013,7 @@ _gtk_css_style_property_init_properties (void) gtk_css_style_property_register ("box-shadow", GTK_CSS_PROPERTY_BOX_SHADOW, G_TYPE_NONE, - GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_NO_RESIZE, + GTK_STYLE_PROPERTY_ANIMATED, shadow_value_parse, NULL, NULL, diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 70dd74eb1f..5a9b8b7c05 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -39,6 +39,7 @@ #include "gtkclipboard.h" #include "gtkcssstylepropertyprivate.h" #include "gtkcssnumbervalueprivate.h" +#include "gtkcssshadowsvalueprivate.h" #include "gtkintl.h" #include "gtkmarshalers.h" #include "gtkselectionprivate.h" @@ -15447,10 +15448,22 @@ union_with_clip (GtkWidget *widget, void _gtk_widget_set_simple_clip (GtkWidget *widget) { + GtkStyleContext *context; GtkAllocation clip; + GtkBorder extents; + + context = gtk_widget_get_style_context (widget); gtk_widget_get_allocation (widget, &clip); + _gtk_css_shadows_value_get_extents (_gtk_style_context_peek_property (context, + GTK_CSS_PROPERTY_BOX_SHADOW), + &extents); + clip.x -= extents.left; + clip.y -= extents.top; + clip.width += extents.left + extents.right; + clip.height += extents.top + extents.bottom; + if (GTK_IS_CONTAINER (widget)) gtk_container_forall (GTK_CONTAINER (widget), union_with_clip, &clip);