From 3065005f05736eabf619f1a15d4ead331a974457 Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Sun, 23 Aug 2015 21:52:24 +0200 Subject: [PATCH] Gtk3: use CSS style instead of old GtkStyle interface --- src/gnome-utils/dialog-utils.c | 47 ++++++++++++---------------------- src/gnome-utils/dialog-utils.h | 1 - 2 files changed, 16 insertions(+), 32 deletions(-) diff --git a/src/gnome-utils/dialog-utils.c b/src/gnome-utils/dialog-utils.c index 0f26d4a3f7..f2215db4c5 100644 --- a/src/gnome-utils/dialog-utils.c +++ b/src/gnome-utils/dialog-utils.c @@ -50,22 +50,8 @@ static QofLogModule log_module = GNC_MOD_GUI; #define GNC_PREF_LAST_GEOMETRY "last-geometry" - -/********************************************************************\ - * gnc_get_deficit_color * - * fill in the 3 color values for the color of deficit values * - * * - * Args: color - color structure * - * Returns: none * - \*******************************************************************/ -void -gnc_get_deficit_color(GdkColor *color) -{ - color->red = 50000; - color->green = 0; - color->blue = 0; -} - +const gchar *css_default_color = "* { color: currentColor }"; +const gchar *css_red_color = "* { color: rgb(75%, 0%, 0%) }"; /********************************************************************\ * gnc_set_label_color * @@ -79,31 +65,30 @@ void gnc_set_label_color(GtkWidget *label, gnc_numeric value) { gboolean deficit; - GdkColormap *cm; - GtkStyle *style; + GtkStyleContext *stylecontext; + GtkCssProvider *provider; if (!gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL, GNC_PREF_NEGATIVE_IN_RED)) return; - cm = gtk_widget_get_colormap(GTK_WIDGET(label)); - gtk_widget_ensure_style(GTK_WIDGET(label)); - style = gtk_widget_get_style(GTK_WIDGET(label)); + provider = GTK_CSS_PROVIDER(g_object_get_data (G_OBJECT (label), "custom-provider")); - style = gtk_style_copy(style); + if (!provider) + { + provider = gtk_css_provider_new(); + gtk_css_provider_load_from_data (provider, css_default_color, -1, NULL); + stylecontext = gtk_widget_get_style_context (label); + gtk_style_context_add_provider (stylecontext, GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_set_data (G_OBJECT (label), "custom-provider", provider); + } deficit = gnc_numeric_negative_p (value); if (deficit) - { - gnc_get_deficit_color(&style->fg[GTK_STATE_NORMAL]); - gdk_colormap_alloc_color(cm, &style->fg[GTK_STATE_NORMAL], FALSE, TRUE); - } + gtk_css_provider_load_from_data (provider, css_red_color, -1, NULL); else - style->fg[GTK_STATE_NORMAL] = style->black; - - gtk_widget_set_style(label, style); - - g_object_unref(style); + gtk_css_provider_load_from_data (provider, css_default_color, -1, NULL); } diff --git a/src/gnome-utils/dialog-utils.h b/src/gnome-utils/dialog-utils.h index 30a29fa896..06e896a6c0 100644 --- a/src/gnome-utils/dialog-utils.h +++ b/src/gnome-utils/dialog-utils.h @@ -29,7 +29,6 @@ #include #include "qof.h" -void gnc_get_deficit_color (GdkColor *color); void gnc_set_label_color (GtkWidget *label, gnc_numeric value); /********************************************************************\