widget: Include box-shadow in the clip

This allows all widgets that implement clip to use box shadows.
This commit is contained in:
Benjamin Otte 2014-05-23 15:52:16 +02:00
parent 0cd63faee2
commit f5b1e75d93
2 changed files with 14 additions and 1 deletions

View File

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

View File

@ -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);