summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2023-05-05 04:53:08 +0200
committerBenjamin Otte <otte@redhat.com>2023-05-16 18:53:27 +0200
commit8d528350b94f3df5987a2d18c8d0bb3796363dec (patch)
tree8857a623fd138993b82b3ab47720c0c5ec31524d
parentd51c92f54dae6aa7a15b209e24a5248c17872f8b (diff)
downloadgtk+-8d528350b94f3df5987a2d18c8d0bb3796363dec.tar.gz
rendernode: clip when drawing shadows
Ensures the shadow stays small.
-rw-r--r--gsk/gskrendernodeimpl.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index 90ef6fd13f..c60bd5b00f 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -4413,6 +4413,11 @@ gsk_shadow_node_draw (GskRenderNode *node,
pattern = cairo_pop_group (cr);
cairo_restore (cr);
+ cairo_save (cr);
+ /* clip so the blur area stays small */
+ gsk_cairo_rectangle (cr, &node->bounds);
+ cairo_clip (cr);
+
for (i = 0; i < self->n_shadows; i++)
{
GskShadow *shadow = &self->shadows[i];
@@ -4434,6 +4439,7 @@ gsk_shadow_node_draw (GskRenderNode *node,
cairo_set_source (cr, pattern);
cairo_paint (cr);
+ cairo_restore (cr);
cairo_pattern_destroy (pattern);
}