mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-11-03 23:35:38 +00:00
Added a GTK3 CSS font provider helper and updated emoji font application to avoid deprecated override APIs in GTK3 builds.
Switched GTK3 setup color previews, entry styling, and user list palette updates to use gtkutil_apply_palette instead of deprecated GTK3 overrides.
This commit is contained in:
1 parent
1fb1865aca
commit
29ac0f9ee6
2 files changed
+64
-36
No files matched your search
+42
-2
@@ -117,6 +117,44 @@ mg_color_component_to_pango (double value)
|
||||
return (guint16)(value * 65535.0 + 0.5);
|
||||
}
|
||||
|
||||
#if HAVE_GTK3
|
||||
static void
|
||||
mg_apply_font_css (GtkWidget *widget, const PangoFontDescription *desc,
|
||||
const char *class_name, const char *provider_key)
|
||||
{
|
||||
GtkStyleContext *context;
|
||||
GtkCssProvider *provider;
|
||||
char *font_str;
|
||||
GString *css;
|
||||
|
||||
if (!widget || !desc)
|
||||
return;
|
||||
|
||||
context = gtk_widget_get_style_context (widget);
|
||||
if (!context)
|
||||
return;
|
||||
|
||||
provider = g_object_get_data (G_OBJECT (widget), provider_key);
|
||||
if (!provider)
|
||||
{
|
||||
provider = gtk_css_provider_new ();
|
||||
g_object_set_data_full (G_OBJECT (widget), provider_key, provider, g_object_unref);
|
||||
}
|
||||
|
||||
font_str = pango_font_description_to_string (desc);
|
||||
css = g_string_new (".");
|
||||
g_string_append (css, class_name);
|
||||
g_string_append_printf (css, " { font: %s; }", font_str);
|
||||
gtk_css_provider_load_from_data (provider, css->str, -1, NULL);
|
||||
g_string_free (css, TRUE);
|
||||
g_free (font_str);
|
||||
|
||||
gtk_style_context_add_class (context, class_name);
|
||||
gtk_style_context_add_provider (context, GTK_STYLE_PROVIDER (provider),
|
||||
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
mg_set_label_alignment_start (GtkWidget *widget)
|
||||
{
|
||||
@@ -3243,7 +3281,8 @@ mg_apply_emoji_fallback_widget (GtkWidget *widget)
|
||||
return;
|
||||
|
||||
#if HAVE_GTK3
|
||||
gtk_widget_override_font (widget, desc);
|
||||
mg_apply_font_css (widget, desc, "zoitechat-emoji-font",
|
||||
"zoitechat-emoji-font-provider");
|
||||
#else
|
||||
gtk_widget_modify_font (widget, desc);
|
||||
#endif
|
||||
@@ -3285,7 +3324,8 @@ mg_apply_emoji_primary_widget (GtkWidget *widget)
|
||||
return;
|
||||
|
||||
#if HAVE_GTK3
|
||||
gtk_widget_override_font (widget, desc);
|
||||
mg_apply_font_css (widget, desc, "zoitechat-emoji-font",
|
||||
"zoitechat-emoji-font-provider");
|
||||
#else
|
||||
gtk_widget_modify_font (widget, desc);
|
||||
#endif
|
||||
|
||||
+22
-34
@@ -1692,15 +1692,7 @@ setup_color_button_apply (GtkWidget *button, const PaletteColor *color)
|
||||
{
|
||||
GtkWidget *target = g_object_get_data (G_OBJECT (button), "zoitechat-color-box");
|
||||
GtkWidget *apply_widget = GTK_IS_WIDGET (target) ? target : button;
|
||||
#if HAVE_GTK3
|
||||
GtkStateFlags states[] = {
|
||||
GTK_STATE_FLAG_NORMAL,
|
||||
GTK_STATE_FLAG_PRELIGHT,
|
||||
GTK_STATE_FLAG_ACTIVE,
|
||||
GTK_STATE_FLAG_SELECTED,
|
||||
GTK_STATE_FLAG_INSENSITIVE
|
||||
};
|
||||
#else
|
||||
#if !HAVE_GTK3
|
||||
GtkStateType states[] = {
|
||||
GTK_STATE_NORMAL,
|
||||
GTK_STATE_PRELIGHT,
|
||||
@@ -1711,18 +1703,18 @@ setup_color_button_apply (GtkWidget *button, const PaletteColor *color)
|
||||
#endif
|
||||
guint i;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (states); i++)
|
||||
#if HAVE_GTK3
|
||||
gtk_widget_override_background_color (apply_widget, states[i], color);
|
||||
gtkutil_apply_palette (apply_widget, color, NULL, NULL);
|
||||
#else
|
||||
for (i = 0; i < G_N_ELEMENTS (states); i++)
|
||||
gtk_widget_modify_bg (apply_widget, states[i], color);
|
||||
#endif
|
||||
|
||||
if (apply_widget != button)
|
||||
for (i = 0; i < G_N_ELEMENTS (states); i++)
|
||||
#if HAVE_GTK3
|
||||
gtk_widget_override_background_color (button, states[i], color);
|
||||
gtkutil_apply_palette (button, color, NULL, NULL);
|
||||
#else
|
||||
for (i = 0; i < G_N_ELEMENTS (states); i++)
|
||||
gtk_widget_modify_bg (button, states[i], color);
|
||||
#endif
|
||||
|
||||
@@ -2803,9 +2795,8 @@ static void
|
||||
setup_apply_entry_style (GtkWidget *entry)
|
||||
{
|
||||
#if HAVE_GTK3
|
||||
gtk_widget_override_background_color (entry, GTK_STATE_FLAG_NORMAL, &colors[COL_BG]);
|
||||
gtk_widget_override_color (entry, GTK_STATE_FLAG_NORMAL, &colors[COL_FG]);
|
||||
gtk_widget_override_font (entry, input_style->font_desc);
|
||||
gtkutil_apply_palette (entry, &colors[COL_BG], &colors[COL_FG],
|
||||
input_style->font_desc);
|
||||
#else
|
||||
gtk_widget_modify_base (entry, GTK_STATE_NORMAL, &colors[COL_BG]);
|
||||
gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &colors[COL_FG]);
|
||||
@@ -2819,29 +2810,26 @@ setup_apply_to_sess (session_gui *gui)
|
||||
mg_update_xtext (gui->xtext);
|
||||
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);
|
||||
#if !HAVE_GTK3
|
||||
if (prefs.hex_gui_ulist_style)
|
||||
gtk_widget_modify_font (gui->user_tree, input_style->font_desc);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if HAVE_GTK3
|
||||
if (prefs.hex_gui_ulist_style || fe_dark_mode_is_enabled ())
|
||||
{
|
||||
gtk_widget_override_background_color (gui->user_tree, GTK_STATE_FLAG_NORMAL, &colors[COL_BG]);
|
||||
const PaletteColor *bg = NULL;
|
||||
const PaletteColor *fg = NULL;
|
||||
const PangoFontDescription *font = NULL;
|
||||
|
||||
if (prefs.hex_gui_ulist_style || fe_dark_mode_is_enabled ())
|
||||
bg = &colors[COL_BG];
|
||||
if (fe_dark_mode_is_enabled ())
|
||||
gtk_widget_override_color (gui->user_tree, GTK_STATE_FLAG_NORMAL, &colors[COL_FG]);
|
||||
else
|
||||
gtk_widget_override_color (gui->user_tree, GTK_STATE_FLAG_NORMAL, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_widget_override_background_color (gui->user_tree, GTK_STATE_FLAG_NORMAL, NULL);
|
||||
gtk_widget_override_color (gui->user_tree, GTK_STATE_FLAG_NORMAL, NULL);
|
||||
}
|
||||
fg = &colors[COL_FG];
|
||||
if (prefs.hex_gui_ulist_style)
|
||||
font = input_style->font_desc;
|
||||
|
||||
gtkutil_apply_palette (gui->user_tree, bg, fg, font);
|
||||
}
|
||||
#else
|
||||
if (prefs.hex_gui_ulist_style || fe_dark_mode_is_enabled ())
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user