From d330d6d537f130babfef0a9877bf9927d059a5fe Mon Sep 17 00:00:00 2001 From: deepend Date: Fri, 30 Jan 2026 17:28:09 -0700 Subject: [PATCH] Updated emoji font fallback/primary application to use GTK3 style context fonts with gtk_widget_override_font, while keeping GTK2 style/modify calls behind #if !HAVE_GTK3. Applied GTK3 font overrides for the user list font setting in setup_apply_to_sess, with GTK2 fallback preserved under #if !HAVE_GTK3 --- src/fe-gtk/maingui.c | 46 ++++++++++++++++++++++++++++++++++++++++++-- src/fe-gtk/setup.c | 6 ++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c index e4321362..f0b4b99c 100644 --- a/src/fe-gtk/maingui.c +++ b/src/fe-gtk/maingui.c @@ -3178,42 +3178,84 @@ mg_fontdesc_with_fallback (const PangoFontDescription *base_desc, gboolean emoji static void mg_apply_emoji_fallback_widget (GtkWidget *widget) { - GtkStyle *style; PangoFontDescription *desc; +#if HAVE_GTK3 + GtkStyleContext *context; + const PangoFontDescription *base_desc; +#else + GtkStyle *style; +#endif if (!widget) return; +#if HAVE_GTK3 + context = gtk_widget_get_style_context (widget); + if (!context) + return; + + base_desc = gtk_style_context_get_font (context, GTK_STATE_FLAG_NORMAL); + if (!base_desc) + return; + + desc = mg_fontdesc_with_fallback (base_desc, FALSE); +#else style = gtk_widget_get_style (widget); if (!style || !style->font_desc) return; desc = mg_fontdesc_with_fallback (style->font_desc, FALSE); +#endif if (!desc) return; +#if HAVE_GTK3 + gtk_widget_override_font (widget, desc); +#else gtk_widget_modify_font (widget, desc); +#endif pango_font_description_free (desc); } static void mg_apply_emoji_primary_widget (GtkWidget *widget) { - GtkStyle *style; PangoFontDescription *desc; +#if HAVE_GTK3 + GtkStyleContext *context; + const PangoFontDescription *base_desc; +#else + GtkStyle *style; +#endif if (!widget) return; +#if HAVE_GTK3 + context = gtk_widget_get_style_context (widget); + if (!context) + return; + + base_desc = gtk_style_context_get_font (context, GTK_STATE_FLAG_NORMAL); + if (!base_desc) + return; + + desc = mg_fontdesc_with_fallback (base_desc, TRUE); +#else style = gtk_widget_get_style (widget); if (!style || !style->font_desc) return; desc = mg_fontdesc_with_fallback (style->font_desc, TRUE); +#endif if (!desc) return; +#if HAVE_GTK3 + gtk_widget_override_font (widget, desc); +#else gtk_widget_modify_font (widget, desc); +#endif pango_font_description_free (desc); } diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c index a53b6d34..ae268ea4 100644 --- a/src/fe-gtk/setup.c +++ b/src/fe-gtk/setup.c @@ -2814,7 +2814,13 @@ setup_apply_to_sess (session_gui *gui) chanview_apply_theme ((chanview *) gui->chanview); if (prefs.hex_gui_ulist_style) + { +#if HAVE_GTK3 + gtk_widget_override_font (gui->user_tree, input_style->font_desc); +#else gtk_widget_modify_font (gui->user_tree, input_style->font_desc); +#endif + } #if GTK_CHECK_VERSION(3,0,0) if (prefs.hex_gui_ulist_style || fe_dark_mode_is_enabled ())