From a0ed41d8ce56ee52eec910116e59d9b8a0450ef0 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 28 Oct 2011 22:02:18 -0400 Subject: [PATCH] theme: Use cairo for drawing uncolorized IMAGEs https://bugzilla.gnome.org/show_bug.cgi?id=662962 --- src/ui/theme.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/ui/theme.c b/src/ui/theme.c index 2221894e7..11850f0c2 100644 --- a/src/ui/theme.c +++ b/src/ui/theme.c @@ -3773,21 +3773,32 @@ meta_draw_op_draw_with_env (const MetaDrawOp *op, env->object_height = gdk_pixbuf_get_height (op->data.image.pixbuf); } + rx = parse_x_position_unchecked (op->data.image.x, env); + ry = parse_y_position_unchecked (op->data.image.y, env); + rwidth = parse_size_unchecked (op->data.image.width, env); rheight = parse_size_unchecked (op->data.image.height, env); - - pixbuf = draw_op_as_pixbuf (op, style_gtk, info, - rwidth, rheight); - if (pixbuf) + if (op->data.image.pixbuf != NULL && + op->data.image.colorize_spec == NULL) { - rx = parse_x_position_unchecked (op->data.image.x, env); - ry = parse_y_position_unchecked (op->data.image.y, env); + draw_image (cr, + op->data.image.pixbuf, + op->data.image.fill_type, + rx, ry, rwidth, rheight); + } + else if (op->data.image.colorize_spec != NULL) + { + pixbuf = draw_op_as_pixbuf (op, style_gtk, info, + rwidth, rheight); - gdk_cairo_set_source_pixbuf (cr, pixbuf, rx, ry); - cairo_paint (cr); + if (pixbuf) + { + gdk_cairo_set_source_pixbuf (cr, pixbuf, rx, ry); + cairo_paint (cr); - g_object_unref (G_OBJECT (pixbuf)); + g_object_unref (G_OBJECT (pixbuf)); + } } } break;