From: Matthias Clasen Date: Fri, 3 Sep 2021 17:55:39 +0000 (-0400) Subject: widget: Redraw when font options change X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2^2~47 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=965ca1b6073974d431d4f5bb532e2009f82a7a5f;p=gtk4.git widget: Redraw when font options change Its the right thing to do, even if it is a rare event. --- diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 2a8e288232..65185415cd 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -6427,7 +6427,7 @@ gtk_widget_get_effective_font_map (GtkWidget *widget) return pango_cairo_font_map_get_default (); } -static void +static gboolean update_pango_context (GtkWidget *widget, PangoContext *context) { @@ -6436,6 +6436,9 @@ update_pango_context (GtkWidget *widget, PangoFontDescription *font_desc; GtkSettings *settings; cairo_font_options_t *font_options; + guint old_serial; + + old_serial = pango_context_get_serial (context); font_desc = gtk_css_style_get_pango_font (style); pango_context_set_font_description (context, font_desc); @@ -6468,6 +6471,8 @@ update_pango_context (GtkWidget *widget, } pango_context_set_font_map (context, gtk_widget_get_effective_font_map (widget)); + + return old_serial != pango_context_get_serial (context); } static void @@ -6475,8 +6480,11 @@ gtk_widget_update_pango_context (GtkWidget *widget) { PangoContext *context = gtk_widget_peek_pango_context (widget); - if (context) - update_pango_context (widget, context); + if (!context) + return; + + if (update_pango_context (widget, context)) + gtk_widget_queue_draw (widget); } /**