Replace deprecated Gtk3.16 gtk_override_background_color

Use css to make changes to the background color of widgets
This commit is contained in:
Robert Fewell 2017-07-02 10:11:05 +01:00
parent 009520498e
commit 54465dd8a9
3 changed files with 72 additions and 1 deletions

View File

@ -2296,6 +2296,11 @@ main_window_update_page_color (GncPluginPage *page,
if (want_color && gdk_rgba_parse(&tab_color, color_string) && priv->show_color_tabs)
{
#if GTK_CHECK_VERSION(3,16,0)
GtkCssProvider *provider = gtk_css_provider_new();
GtkStyleContext *stylectxt;
gchar *col_str, *widget_css;
#endif
if (!GTK_IS_EVENT_BOX (tab_widget))
{
GtkWidget *event_box = gtk_event_box_new ();
@ -2306,8 +2311,21 @@ main_window_update_page_color (GncPluginPage *page,
g_object_unref (tab_widget);
tab_widget = event_box;
}
#if GTK_CHECK_VERSION(3,16,0)
stylectxt = gtk_widget_get_style_context (GTK_WIDGET (tab_widget));
col_str = gdk_rgba_to_string (&tab_color);
widget_css = g_strconcat ("*{\n background-color:", col_str, ";\n}\n", NULL);
gtk_css_provider_load_from_data (provider, widget_css, -1, NULL);
gtk_style_context_add_provider (stylectxt, GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
g_object_unref (provider);
g_free (col_str);
g_free (widget_css);
#else
gtk_widget_override_background_color (tab_widget, GTK_STATE_NORMAL, &tab_color);
gtk_widget_override_background_color (tab_widget, GTK_STATE_ACTIVE, &tab_color);
#endif
}
else
{
@ -2942,8 +2960,11 @@ gnc_main_window_open_page (GncMainWindow *window,
image = gtk_image_new_from_icon_name (icon, GTK_ICON_SIZE_MENU);
gtk_widget_show (image);
gtk_box_pack_start (GTK_BOX (tab_hbox), image, FALSE, FALSE, 0);
#if GTK_CHECK_VERSION(3,12,0)
gtk_widget_set_margin_start (GTK_WIDGET(image), 5);
#else
gtk_widget_set_margin_left (GTK_WIDGET(image), 5);
#endif
gtk_box_pack_start (GTK_BOX (tab_hbox), label, TRUE, TRUE, 0);
}
else

View File

@ -5798,7 +5798,23 @@ gtv_sr_editable_start_editing_cb (GtkCellRenderer *cr, GtkCellEditable *editable
if (gdk_rgba_parse (&color, row_color))
{
if (entry != NULL)
{
#if GTK_CHECK_VERSION(3,16,0)
GtkStyleContext *stylectxt = gtk_widget_get_style_context (GTK_WIDGET (entry));
GtkCssProvider *provider = gtk_css_provider_new();
gchar *col_str = gdk_rgba_to_string (&color);
gchar *widget_css = g_strconcat ("*{\n background-color:", col_str, ";\n}\n", NULL);
gtk_css_provider_load_from_data (provider, widget_css, -1, NULL);
gtk_style_context_add_provider (stylectxt, GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
g_object_unref (provider);
g_free (col_str);
g_free (widget_css);
#else
gtk_widget_override_background_color (GTK_WIDGET (entry), GTK_STATE_FLAG_NORMAL, &color);
#endif
}
}
}

View File

@ -200,6 +200,26 @@ on_matcher_help_close_clicked (GtkButton *button, gpointer user_data)
gtk_widget_destroy(help_dialog);
}
#if GTK_CHECK_VERSION(3,16,0)
static void
gnc_override_background_color (GtkWidget *widget,
GdkRGBA *rgba)
{
GtkCssProvider *provider = gtk_css_provider_new();
GtkStyleContext *stylectxt = gtk_widget_get_style_context (widget);
gchar *col_str = gdk_rgba_to_string (rgba);
gchar *widget_css = g_strconcat ("*{\n background-color:", col_str, ";\n}\n", NULL);
gtk_css_provider_load_from_data (provider, widget_css, -1, NULL);
gtk_style_context_add_provider (stylectxt, GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
g_object_unref (provider);
g_free (col_str);
g_free (widget_css);
}
#endif
void
on_matcher_help_clicked (GtkButton *button, gpointer user_data)
{
@ -215,14 +235,28 @@ on_matcher_help_clicked (GtkButton *button, gpointer user_data)
gnc_builder_add_from_file (builder, "dialog-import.glade", "matcher_help_dialog");
box = GTK_WIDGET(gtk_builder_get_object (builder, "red"));
#if GTK_CHECK_VERSION(3,16,0)
gnc_override_background_color (box, &info->color_back_red);
#else
gtk_widget_override_background_color(box, GTK_STATE_FLAG_NORMAL,
&info->color_back_red);
#endif
box = GTK_WIDGET(gtk_builder_get_object (builder, "yellow"));
#if GTK_CHECK_VERSION(3,16,0)
gnc_override_background_color (box, &info->color_back_yellow);
#else
gtk_widget_override_background_color(box, GTK_STATE_FLAG_NORMAL,
&info->color_back_yellow);
#endif
box = GTK_WIDGET(gtk_builder_get_object (builder, "green"));
#if GTK_CHECK_VERSION(3,16,0)
gnc_override_background_color (box, &info->color_back_green);
#else
gtk_widget_override_background_color(box, GTK_STATE_FLAG_NORMAL,
&info->color_back_green);
#endif
help_dialog = GTK_WIDGET(gtk_builder_get_object (builder, "matcher_help_dialog"));
gtk_window_set_transient_for(GTK_WINDOW(help_dialog),