summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-09-03 10:23:01 -0700
committerJasper St. Pierre <jstpierre@mecheye.net>2014-09-03 13:02:48 -0700
commitff58cd44cb1ca3ddfcbbb23355bd006f445972bc (patch)
treec5773c3567cfd8f60cb90521f5ce157cb2ce972d
parent05d4e37a40f0502259bc35c653e2c2e318392f46 (diff)
downloadgtk+-wip/pango-shadow-cache.tar.gz
-rw-r--r--gtk/gtkcssshadowvalue.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c
index f8acb4ae35..d2a67b3a36 100644
--- a/gtk/gtkcssshadowvalue.c
+++ b/gtk/gtkcssshadowvalue.c
@@ -348,14 +348,7 @@ gtk_css_shadow_value_start_drawing (const GtkCssValue *shadow,
cairo_surface_set_device_offset (surface, clip_radius - clip_rect.x, clip_radius - clip_rect.y);
blur_cr = cairo_create (surface);
cairo_set_user_data (blur_cr, &original_cr_key, cairo_reference (cr), (cairo_destroy_func_t) cairo_destroy);
-
- if (cairo_has_current_point (cr))
- {
- double x, y;
-
- cairo_get_current_point (cr, &x, &y);
- cairo_move_to (blur_cr, x, y);
- }
+ cairo_new_sub_path (blur_cr);
return blur_cr;
}
@@ -422,6 +415,7 @@ _gtk_css_shadow_value_paint_layout (const GtkCssValue *shadow,
PangoLayout *layout)
{
double x, y;
+ PangoRectangle ink_rect;
g_return_if_fail (shadow->class == &GTK_CSS_VALUE_SHADOW);
@@ -431,6 +425,10 @@ _gtk_css_shadow_value_paint_layout (const GtkCssValue *shadow,
cairo_translate (cr, x, y);
cairo_new_sub_path (cr);
+ pango_layout_get_pixel_extents (layout, &ink_rect, NULL);
+ cairo_rectangle (cr, ink_rect.x, ink_rect.y, ink_rect.width, ink_rect.height);
+ cairo_clip (cr);
+
cairo_translate (cr,
_gtk_css_number_value_get (shadow->hoffset, 0),
_gtk_css_number_value_get (shadow->voffset, 0));