From 26dead7ea4dab8c3cacf81d533444550891177ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Sun, 17 Jul 2022 16:04:50 +0200 Subject: [PATCH] Fix the About dialog animation on macOS --- fiv.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/fiv.c b/fiv.c index 9f0af5e..7599105 100644 --- a/fiv.c +++ b/fiv.c @@ -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; }