[gtk+/gtk-3-22] render: Draw shadows outside of potential push_group() call



commit a68460847efb827e60cb4eaebd6e16afdeb70591
Author: Benjamin Otte <otte redhat com>
Date:   Tue Nov 8 02:20:40 2016 +0100

    render: Draw shadows outside of potential push_group() call
    
    Before, the shadows were clipped.

 gtk/gtkrenderbackground.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtkrenderbackground.c b/gtk/gtkrenderbackground.c
index e691bfc..2064238 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);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]