[gtk+/gtk-style-context] GtkThemingEngine: use background-image in render_background()
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-style-context] GtkThemingEngine: use background-image in render_background()
- Date: Thu, 2 Sep 2010 10:49:16 +0000 (UTC)
commit 70de2cc9b518c3c4de03880d9ddfbcf87d3f058b
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Sep 2 02:14:10 2010 +0200
GtkThemingEngine: use background-image in render_background()
gtk/gtkthemingengine.c | 52 +++++++++++++++++++++++++++++++++--------------
1 files changed, 36 insertions(+), 16 deletions(-)
---
diff --git a/gtk/gtkthemingengine.c b/gtk/gtkthemingengine.c
index b37a388..5a2285a 100644
--- a/gtk/gtkthemingengine.c
+++ b/gtk/gtkthemingengine.c
@@ -892,28 +892,47 @@ gtk_theming_engine_render_background (GtkThemingEngine *engine,
gdouble width,
gdouble height)
{
+ GdkColor *bg_color, *base_color;
+ cairo_pattern_t *pattern;
GtkStateFlags flags;
- GdkColor *color;
- cairo_save (cr);
flags = gtk_theming_engine_get_state (engine);
-
- if (gtk_theming_engine_has_class (engine, "entry"))
- gtk_theming_engine_get (engine, flags,
- "base-color", &color,
- NULL);
- else
- gtk_theming_engine_get (engine, flags,
- "background-color", &color,
- NULL);
-
- gdk_cairo_set_source_color (cr, color);
+ cairo_save (cr);
if (gtk_theming_engine_has_class (engine, "spinbutton") &&
gtk_theming_engine_has_class (engine, "button"))
- cairo_rectangle (cr, x + 2, y + 2, width - 4, height - 4);
+ {
+ x += 2;
+ y += 2;
+ width -= 4;
+ height -= 4;
+ }
+
+ gtk_theming_engine_get (engine, flags,
+ "background-image", &pattern,
+ "background-color", &bg_color,
+ "base-color", &base_color,
+ NULL);
+
+ if (pattern)
+ {
+ cairo_translate (cr, x, y);
+ cairo_scale (cr, width, height);
+
+ cairo_rectangle (cr, 0, 0, 1, 1);
+ cairo_set_source (cr, pattern);
+
+ cairo_pattern_destroy (pattern);
+ }
else
- cairo_rectangle (cr, x, y, width, height);
+ {
+ if (gtk_theming_engine_has_class (engine, "entry"))
+ gdk_cairo_set_source_color (cr, base_color);
+ else
+ gdk_cairo_set_source_color (cr, bg_color);
+
+ cairo_rectangle (cr, x, y, width, height);
+ }
if (gtk_theming_engine_has_class (engine, "tooltip"))
{
@@ -927,7 +946,8 @@ gtk_theming_engine_render_background (GtkThemingEngine *engine,
cairo_restore (cr);
- gdk_color_free (color);
+ gdk_color_free (base_color);
+ gdk_color_free (bg_color);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]