diff options
author | Benjamin Otte <otte@redhat.com> | 2020-02-13 01:53:12 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2020-02-13 07:36:38 +0100 |
commit | 6203cecf97eb33b7349abc80dc0af50fc4f602dc (patch) | |
tree | 3a08ac5797a933156922f286cf8a2d2b44854f60 | |
parent | 6f9f18009cc20457efd4a266a7de4ce4bc637ad6 (diff) | |
download | gtk+-6203cecf97eb33b7349abc80dc0af50fc4f602dc.tar.gz |
gsk: Clip shadow node before push_group()
We want to be sure to push a group that's as small as possible, so we
clip to the child's bounds, because that's the smallest we can go.
-rw-r--r-- | gsk/gskrendernodeimpl.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c index d8bec7047e..aad1fa59ef 100644 --- a/gsk/gskrendernodeimpl.c +++ b/gsk/gskrendernodeimpl.c @@ -2899,9 +2899,14 @@ gsk_shadow_node_draw (GskRenderNode *node, cairo_pattern_t *pattern; gsize i; + cairo_save (cr); + /* clip so the push_group() creates a small surface */ + gsk_cairo_rectangle (cr, &self->child->bounds); + cairo_clip (cr); cairo_push_group (cr); gsk_render_node_draw (self->child, cr); pattern = cairo_pop_group (cr); + cairo_restore (cr); for (i = 0; i < self->n_shadows; i++) { |