Fix the About dialog animation on macOS

This commit is contained in:
Přemysl Eric Janouch 2022-07-17 16:04:50 +02:00
parent 94f6938b9a
commit 26dead7ea4
Signed by: p
GPG Key ID: A0420B94F92B9493

11
fiv.c
View File

@ -360,6 +360,12 @@ on_about_draw(GtkWidget *widget, cairo_t *cr, gpointer user_data)
GtkStyleContext *style = gtk_widget_get_style_context(widget); GtkStyleContext *style = gtk_widget_get_style_context(widget);
gtk_render_background(style, cr, 0, 0, allocation.width, allocation.height); 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, cairo_translate(cr, (allocation.width - ABOUT_SIZE * ABOUT_SCALE) / 2,
ABOUT_SIZE * ABOUT_SCALE / 4); ABOUT_SIZE * ABOUT_SCALE / 4);
cairo_scale(cr, ABOUT_SCALE, ABOUT_SCALE); 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); cairo_restore(cr);
draw_ligature(cr); draw_ligature(cr);
if (broken_backend) {
cairo_pop_group_to_source(cr);
cairo_paint(cr);
}
return TRUE; return TRUE;
} }