Fix folder color so it works with GTK themes
[claws.git] / src / folderview.c
index 352122f85412c66e02f280de11ff26bdb6452551..5630097ce2e2057b101d2977c31bae9c3b249580 100644 (file)
@@ -1013,6 +1013,7 @@ static void folderview_update_node(FolderView *folderview, GtkCTreeNode *node)
 {
        GtkCTree *ctree = GTK_CTREE(folderview->ctree);
        GtkStyle *style = NULL;
+       GtkStyle *color_style = NULL;
        FolderItem *item;
        GdkPixmap *xpm, *openxpm;
        GdkBitmap *mask, *openmask;
@@ -1200,21 +1201,26 @@ static void folderview_update_node(FolderView *folderview, GtkCTreeNode *node)
 
        gtk_ctree_node_set_foreground(ctree, node, NULL);
 
-       if (use_bold && use_color)
+       if (use_bold && use_color) {
                style = bold_color_style;
-       else if (use_bold) {
+       else if (use_bold) {
                style = bold_style;
                if (item->op_count > 0) {
                        style = bold_tgtfold_style;
                }
-       }
-       else if (use_color) {
+       } else if (use_color) {
                style = normal_color_style;
                gtk_ctree_node_set_foreground(ctree, node,
                                              &folderview->color_new);
-       }
-       else if (item->op_count > 0) {
+       } else if (item->op_count > 0) {
                style = bold_tgtfold_style;
+       } else if (item->prefs->color > 0) {
+               GdkColor gdk_color;
+
+               gtkut_convert_int_to_gdk_color(item->prefs->color, &gdk_color);
+               color_style = gtk_style_copy(gtk_widget_get_style(GTK_WIDGET(ctree)));
+               color_style->fg[GTK_STATE_NORMAL] = gdk_color;
+               style = color_style;
        } else {
                style = normal_style;
        }
@@ -1702,6 +1708,7 @@ static void folderview_selected(GtkCTree *ctree, GtkCTreeNode *row,
        }
                
        /* Show messages */
+       summary_set_prefs_from_folderitem(folderview->summaryview, item);
        opened = summary_show(folderview->summaryview, item);
 
        folder_clean_cache_memory();