[Xfce4-commits] <gtk-xfce-engine:peter/refresh> Use parent background for smooth edges.

Peter de Ridder noreply at xfce.org
Sun Jan 5 14:18:01 CET 2014


Updating branch refs/heads/peter/refresh
         to e91f7cd0cfa190a3e71f246793dd4a7cae9953d0 (commit)
       from 8358551451918f61947dbd9e0066ee8a08b51149 (commit)

commit e91f7cd0cfa190a3e71f246793dd4a7cae9953d0
Author: Peter de Ridder <peter at xfce.org>
Date:   Sun Jan 5 14:00:38 2014 +0100

    Use parent background for smooth edges.

 gtk-2.0/xfce_theme_draw.c |   28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/gtk-2.0/xfce_theme_draw.c b/gtk-2.0/xfce_theme_draw.c
index 1e0c0db..f2a4abd 100644
--- a/gtk-2.0/xfce_theme_draw.c
+++ b/gtk-2.0/xfce_theme_draw.c
@@ -383,6 +383,9 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
 {
     gint xt, yt;
     cairo_t *cr;
+    GtkWidget *parent;
+    GtkStyle *pstyle;
+    GdkColor *pbg;
 
     CHECK_ARGS;
 
@@ -391,6 +394,17 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
 
     SANITIZE_SIZE;
 
+    parent = gtk_widget_get_parent(widget);
+    if (parent)
+    {
+        pstyle = gtk_widget_get_style(widget);
+        pbg = &pstyle->bg[gtk_widget_get_state(parent)];
+    }
+    else
+    {
+        pbg = &style->mid[state_type];
+    }
+
     /* Spin buttons are a special case */
     if (widget && GTK_IS_SPIN_BUTTON (widget))
     {
@@ -465,7 +479,7 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
                             state_type = GTK_STATE_NORMAL;
                         }
 
-                        gdk_cairo_set_source_color(cr, &style->mid[state_type]);
+                        gdk_cairo_set_source_color(cr, pbg);
                         cairo_rectangle(cr, x, y, 1, 1);
                         cairo_rectangle(cr, x + width - 1, y, 1, 1);
                         cairo_rectangle(cr, x, y + height - 1, 1, 1);
@@ -559,7 +573,7 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
                         cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
                         cairo_stroke(cr);
 
-                        gdk_cairo_set_source_color(cr, &style->mid[GTK_STATE_NORMAL]);
+                        gdk_cairo_set_source_color(cr, pbg);
                         cairo_rectangle(cr, x, y, 1, 1);
                         cairo_rectangle(cr, x + width - 1, y, 1, 1);
                         cairo_rectangle(cr, x, y + height - 1, 1, 1);
@@ -592,7 +606,7 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
                         cairo_line_to(cr, x + width - 1.5, y + 2.5);
                         cairo_stroke(cr);
 
-                        gdk_cairo_set_source_color(cr, &style->mid[state_type]);
+                        gdk_cairo_set_source_color(cr, pbg);
                         cairo_rectangle(cr, x, y, 1, 1);
                         cairo_rectangle(cr, x + width - 1, y, 1, 1);
                         cairo_rectangle(cr, x, y + height - 1, 1, 1);
@@ -614,7 +628,7 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
                         cairo_line_to(cr, x + width - 0.5, y + 1.5);
                         cairo_stroke(cr);
 
-                        gdk_cairo_set_source_color(cr, &style->mid[state_type]);
+                        gdk_cairo_set_source_color(cr, pbg);
                         cairo_rectangle(cr, x, y, 1, 1);
                         cairo_rectangle(cr, x + width - 1, y, 1, 1);
                         cairo_rectangle(cr, x, y + height - 1, 1, 1);
@@ -685,7 +699,7 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
                         cairo_rectangle(cr, x + 0.5, y + 0.5, width - 1, height - 1);
                         cairo_stroke(cr);
 
-                        gdk_cairo_set_source_color(cr, &style->mid[GTK_STATE_NORMAL]);
+                        gdk_cairo_set_source_color(cr, pbg);
                         cairo_rectangle(cr, x, y, 1, 1);
                         cairo_rectangle(cr, x + width - 1, y, 1, 1);
                         cairo_rectangle(cr, x, y + height - 1, 1, 1);
@@ -865,7 +879,7 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
                             cairo_line_to(cr, x + width - 1.5, y + 1.5);
                             cairo_stroke(cr);
 
-                            gdk_cairo_set_source_color(cr, &style->mid[state_type]);
+                            gdk_cairo_set_source_color(cr, pbg);
                             cairo_rectangle(cr, x, y, 1, 1);
                             cairo_rectangle(cr, x + width - 1, y, 1, 1);
                             cairo_rectangle(cr, x, y + height - 1, 1, 1);
@@ -887,7 +901,7 @@ static void draw_shadow(GtkStyle * style, GdkWindow * window, GtkStateType state
                             cairo_line_to(cr, x + width - 0.5, y + 1.5);
                             cairo_stroke(cr);
 
-                            gdk_cairo_set_source_color(cr, &style->mid[state_type]);
+                            gdk_cairo_set_source_color(cr, pbg);
                             cairo_rectangle(cr, x, y, 1, 1);
                             cairo_rectangle(cr, x + width - 1, y, 1, 1);
                             cairo_rectangle(cr, x, y + height - 1, 1, 1);


More information about the Xfce4-commits mailing list