diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-09-03 10:23:01 -0700 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-09-03 13:02:48 -0700 |
commit | ff58cd44cb1ca3ddfcbbb23355bd006f445972bc (patch) | |
tree | c5773c3567cfd8f60cb90521f5ce157cb2ce972d | |
parent | 05d4e37a40f0502259bc35c653e2c2e318392f46 (diff) | |
download | gtk+-wip/pango-shadow-cache.tar.gz |
xxx clipwip/pango-shadow-cache
-rw-r--r-- | gtk/gtkcssshadowvalue.c | 14 |
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 == >K_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)); |