[gtk+] Use cairo_push_group() to mix backgrounds during transitions



commit 4c40349b920c8b175a118fcca378b6e76e34180c
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Feb 5 13:44:30 2011 +0100

    Use cairo_push_group() to mix backgrounds during transitions
    
    It also helps remove the cairo_clip() call to achieve the rounded
    shape.

 gtk/gtkthemingengine.c |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkthemingengine.c b/gtk/gtkthemingengine.c
index 1db600e..a91daba 100644
--- a/gtk/gtkthemingengine.c
+++ b/gtk/gtkthemingengine.c
@@ -1498,10 +1498,8 @@ render_background_internal (GtkThemingEngine *engine,
                           NULL);
 
   running = gtk_theming_engine_state_is_running (engine, GTK_STATE_PRELIGHT, &progress);
-  _cairo_round_rectangle_sides (cr, (gdouble) radius,
-                                x, y, width, height,
-                                SIDE_ALL, junction);
-  cairo_clip (cr);
+
+  cairo_push_group (cr);
 
   if (gtk_theming_engine_has_class (engine, "background"))
     {
@@ -1711,6 +1709,14 @@ render_background_internal (GtkThemingEngine *engine,
       cairo_pattern_destroy (mask);
     }
 
+  cairo_pop_group_to_source (cr);
+
+  _cairo_round_rectangle_sides (cr, (gdouble) radius,
+                                x, y, width, height,
+                                SIDE_ALL, junction);
+  cairo_close_path (cr);
+  cairo_fill (cr);
+
   cairo_restore (cr);
 
   gdk_rgba_free (bg_color);



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