# HG changeset patch # User Sean Egan # Date 1170664941 0 # Node ID 0324f69112f941cc7d879c059596a617c700e89f # Parent 00fa07da4175878ab675b7e2426d1635e6e459d7 Make group background colors update when the theme changes. diff -r 00fa07da4175 -r 0324f69112f9 pidgin/gtkblist.c --- a/pidgin/gtkblist.c Mon Feb 05 08:28:45 2007 +0000 +++ b/pidgin/gtkblist.c Mon Feb 05 08:42:21 2007 +0000 @@ -126,6 +126,7 @@ static void pidgin_blist_update_buddy(GaimBuddyList *list, GaimBlistNode *node, gboolean statusChange); static void pidgin_blist_selection_changed(GtkTreeSelection *selection, gpointer data); static void pidgin_blist_update(GaimBuddyList *list, GaimBlistNode *node); +static void pidgin_blist_update_group(GaimBuddyList *list, GaimBlistNode *node); static void pidgin_blist_update_contact(GaimBuddyList *list, GaimBlistNode *node); static char *gaim_get_tooltip_text(GaimBlistNode *node, gboolean full); static const char *item_factory_translate_func (const char *path, gpointer func_data); @@ -3953,6 +3954,22 @@ return FALSE; } +/* This assumes there are not things like groupless buddies or multi-leveled groups. + * I'm sure other things in this code assumes that also. + */ +static void +treeview_style_set (GtkWidget *widget, + GtkStyle *prev_style, + gpointer data) +{ + GaimBuddyList *list = data; + GaimBlistNode *node = list->root; + while (node) { + pidgin_blist_update_group(list, node); + node = node->next; + } +} + static void headline_style_set (GtkWidget *widget, GtkStyle *prev_style) @@ -4216,8 +4233,10 @@ gtk_widget_show(gtkblist->treeview); gtk_widget_set_name(gtkblist->treeview, "pidginblist_treeview"); -/* gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(gtkblist->treeview), TRUE); */ - + + g_signal_connect(gtkblist->treeview, + "style-set", + G_CALLBACK(treeview_style_set), list); /* Set up selection stuff */ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview)); g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(pidgin_blist_selection_changed), NULL);