talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit a1c18383eec22739453b947a5660b6bc5367e1f5
parent 9ad2c0be37218fe61b8bac55331b67d159706c71
Author: Andrej Kacian <ticho@claws-mail.org>
Date:   Sun, 28 Oct 2018 13:30:29 +0100

A new, non-deprecated way to set color of pref color buttons.

We use Pango markup to set the button label background color,
instead of changing widget-level background color, which doesn't
work anymore in GTK3.

Diffstat:
Msrc/gtk/gtkutils.c | 21+++++++++++++++++++++
Msrc/gtk/gtkutils.h | 5++++-
2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/src/gtk/gtkutils.c b/src/gtk/gtkutils.c @@ -2133,3 +2133,24 @@ gchar *gtkut_gdk_rgba_to_string(GdkRGBA *rgba) return str; } #undef RGBA_ELEMENT_TO_BYTE + +void gtkut_set_button_color(GtkWidget *button, + GdkRGBA *rgba) +{ + gchar *str, *markup; + GtkWidget *label; + + cm_return_if_fail(button != NULL); + cm_return_if_fail(rgba != NULL); + + label = gtk_bin_get_child(GTK_BIN(button)); + cm_return_if_fail(label != NULL); + + str = gtkut_gdk_rgba_to_string(rgba); + + markup = g_strdup_printf("<span bgcolor=\"%s\">" GTKUT_COLOR_BUTTON_LABEL "</span>", str); + g_free(str); + + gtk_label_set_markup(GTK_LABEL(label), markup); + g_free(markup); +} diff --git a/src/gtk/gtkutils.h b/src/gtk/gtkutils.h @@ -56,8 +56,9 @@ #define GTKUT_CTREE_REFRESH(clist) \ GTK_CMCLIST_GET_CLASS(clist)->refresh(clist) +#define GTKUT_COLOR_BUTTON_LABEL "\x20\xE2\x80\x83\x20" #define GTKUT_COLOR_BUTTON() \ - gtk_button_new_with_label("\x20\xE2\x80\x83\x20") + gtk_button_new_with_label(GTKUT_COLOR_BUTTON_LABEL) /* Set "color" to the same color as "rgba" */ #define GTKUT_GDKRGBA_TO_GDKCOLOR(rgba, color) { \ @@ -165,6 +166,8 @@ GtkWidget *gtkut_account_menu_new (GList *ac_list, void gtkut_set_widget_bgcolor_rgb (GtkWidget *widget, GdkRGBA rgbvalue); +void gtkut_set_button_color(GtkWidget *button, + GdkRGBA *rgbvalue); void gtkut_widget_set_small_font_size(GtkWidget *widget); GtkWidget *gtkut_get_focused_child (GtkContainer *parent);