From a68460847efb827e60cb4eaebd6e16afdeb70591 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 8 Nov 2016 02:20:40 +0100 Subject: [PATCH] render: Draw shadows outside of potential push_group() call Before, the shadows were clipped. --- gtk/gtkrenderbackground.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gtk/gtkrenderbackground.c b/gtk/gtkrenderbackground.c index e691bfcbb8..2064238ba8 100644 --- a/gtk/gtkrenderbackground.c +++ b/gtk/gtkrenderbackground.c @@ -376,6 +376,12 @@ gtk_css_style_render_background (GtkCssStyle *style, cairo_save (cr); cairo_translate (cr, x, y); + /* Outset shadows */ + _gtk_css_shadows_value_paint_box (box_shadow, + cr, + &bg.boxes[GTK_CSS_AREA_BORDER_BOX], + FALSE); + /* * When we have a blend mode set for the background, we cannot blend the current * widget's drawing with whatever the content that the Cairo context may have. @@ -392,12 +398,6 @@ gtk_css_style_render_background (GtkCssStyle *style, cairo_push_group (cr); } - /* Outset shadows */ - _gtk_css_shadows_value_paint_box (box_shadow, - cr, - &bg.boxes[GTK_CSS_AREA_BORDER_BOX], - FALSE); - _gtk_theming_background_paint_color (&bg, cr, bg_color, background_image); number_of_layers = _gtk_css_array_value_get_n_values (background_image); @@ -411,12 +411,6 @@ gtk_css_style_render_background (GtkCssStyle *style, _gtk_theming_background_paint_layer (&bg, idx, cr, blend_mode); } - /* Inset shadows */ - _gtk_css_shadows_value_paint_box (box_shadow, - cr, - &bg.boxes[GTK_CSS_AREA_PADDING_BOX], - TRUE); - /* Paint back the resulting surface */ if (needs_push_group) { @@ -425,6 +419,12 @@ gtk_css_style_render_background (GtkCssStyle *style, cairo_restore (cr); } + /* Inset shadows */ + _gtk_css_shadows_value_paint_box (box_shadow, + cr, + &bg.boxes[GTK_CSS_AREA_PADDING_BOX], + TRUE); + cairo_restore (cr); }