diff options
-rw-r--r-- | fiv.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -360,6 +360,12 @@ on_about_draw(GtkWidget *widget, cairo_t *cr, gpointer user_data) GtkStyleContext *style = gtk_widget_get_style_context(widget); gtk_render_background(style, cr, 0, 0, allocation.width, allocation.height); + // The transformation matrix turns out/is applied wrongly on Quartz. + gboolean broken_backend = cairo_surface_get_type(cairo_get_target(cr)) == + CAIRO_SURFACE_TYPE_QUARTZ; + if (broken_backend) + cairo_push_group(cr); + cairo_translate(cr, (allocation.width - ABOUT_SIZE * ABOUT_SCALE) / 2, ABOUT_SIZE * ABOUT_SCALE / 4); cairo_scale(cr, ABOUT_SCALE, ABOUT_SCALE); @@ -385,6 +391,11 @@ on_about_draw(GtkWidget *widget, cairo_t *cr, gpointer user_data) cairo_restore(cr); draw_ligature(cr); + + if (broken_backend) { + cairo_pop_group_to_source(cr); + cairo_paint(cr); + } return TRUE; } |