0.9.6claws7
[claws.git] / src / summaryview.c
index 3dcb70186d05fb8ed7e4e3282b2ed0fb01c5646f..11a85902eea4bcdae54cc53160a899232e9eac5b 100644 (file)
@@ -91,8 +91,6 @@
 #define SUMMARY_COL_LOCKED_WIDTH       13
 #define SUMMARY_COL_MIME_WIDTH         11
 
-static GdkFont *boldfont;
-static GdkFont *smallfont;
 
 static GtkStyle *bold_style;
 static GtkStyle *bold_marked_style;
@@ -722,6 +720,8 @@ SummaryView *summary_create(void)
 
 void summary_init(SummaryView *summaryview)
 {
+       static GdkFont *boldfont = NULL;
+       static GdkFont *smallfont = NULL;
        GtkStyle *style;
        GtkWidget *pixmap;
 
@@ -751,6 +751,21 @@ void summary_init(SummaryView *summaryview)
        stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_GPG_SIGNED,
                         &gpgsignedxpm, &gpgsignedxpmmask);
 
+       if (!bold_style) {
+               bold_style = gtk_style_copy
+                       (gtk_widget_get_style(summaryview->ctree));
+               if (!boldfont)
+                       boldfont = gtkut_font_load(BOLD_FONT);
+               if (boldfont)
+                       bold_style->font = boldfont;
+               bold_marked_style = gtk_style_copy(bold_style);
+               bold_marked_style->fg[GTK_STATE_NORMAL] =
+                       summaryview->color_marked;
+               bold_deleted_style = gtk_style_copy(bold_style);
+               bold_deleted_style->fg[GTK_STATE_NORMAL] =
+                       summaryview->color_dim;
+       }
+       
        if (!small_style) {
                small_style = gtk_style_copy
                        (gtk_widget_get_style(summaryview->ctree));
@@ -764,23 +779,11 @@ void summary_init(SummaryView *summaryview)
                small_deleted_style->fg[GTK_STATE_NORMAL] =
                        summaryview->color_dim;
        }
-       if (!bold_style) {
-               bold_style = gtk_style_copy
-                       (gtk_widget_get_style(summaryview->ctree));
-               if (!boldfont)
-                       boldfont = gtkut_font_load(BOLD_FONT);
-               bold_style->font = boldfont;
-               bold_marked_style = gtk_style_copy(bold_style);
-               bold_marked_style->fg[GTK_STATE_NORMAL] =
-                       summaryview->color_marked;
-               bold_deleted_style = gtk_style_copy(bold_style);
-               bold_deleted_style->fg[GTK_STATE_NORMAL] =
-                       summaryview->color_dim;
-       }
 
        style = gtk_style_copy(gtk_widget_get_style
                                (summaryview->statlabel_folder));
-
+       if (smallfont)
+               style->font = smallfont;
        gtk_widget_set_style(summaryview->statlabel_folder, style);
        gtk_widget_set_style(summaryview->statlabel_select, style);
        gtk_widget_set_style(summaryview->statlabel_msgs, style);
@@ -1873,7 +1876,8 @@ static void summary_set_marks_func(GtkCTree *ctree, GtkCTreeNode *node,
 
        msginfo = gtk_ctree_node_get_row_data(ctree, node);
 
-       if (MSG_IS_NEWS(msginfo->flags))
+       if (msginfo->folder && msginfo->folder->folder &&
+           msginfo->folder->folder->klass->type == F_NEWS)
                news_flag_crosspost(msginfo);
 
        if (MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags)
@@ -2513,9 +2517,12 @@ void summary_redisplay_msg(SummaryView *summaryview)
 void summary_open_msg(SummaryView *summaryview)
 {
        if (!summaryview->selected) return;
-
+       
+       /* CLAWS: if separate message view, don't open a new window
+        * but rather use the current separated message view */
        summary_display_msg_full(summaryview, summaryview->selected,
-                                TRUE, FALSE);
+                                prefs_common.sep_msg ? FALSE : TRUE, 
+                                FALSE);
 }
 
 void summary_view_source(SummaryView * summaryview)
@@ -4427,9 +4434,6 @@ void summary_pass_key_press_event(SummaryView *summaryview, GdkEventKey *event)
 #define BREAK_ON_MODIFIER_KEY() \
        if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) break
 
-#define RETURN_IF_LOCKED() \
-       if (summaryview->mainwin->lock_count) return TRUE
-
 static gint summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
                                SummaryView *summaryview)
 {
@@ -4499,7 +4503,6 @@ static gint summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
                summary_mark_as_unread(summaryview);
                break;
        case GDK_Delete:
-               RETURN_IF_LOCKED();
                BREAK_ON_MODIFIER_KEY();
                summary_delete(summaryview);
                break;
@@ -5003,9 +5006,15 @@ static void news_flag_crosspost(MsgInfo *msginfo)
        GString *line;
        gpointer key;
        gpointer value;
-       Folder *mff = msginfo->folder->folder;
+       Folder *mff;
+
+       g_return_if_fail(msginfo != NULL);
+       g_return_if_fail(msginfo->folder != NULL);
+       g_return_if_fail(msginfo->folder->folder != NULL);
+       mff = msginfo->folder->folder;
+       g_return_if_fail(mff->klass->type != F_NEWS);
 
-       if (mff->account->mark_crosspost_read && MSG_IS_NEWS(msginfo->flags)) {
+       if (mff->account->mark_crosspost_read) {
                line = g_string_sized_new(128);
                g_string_sprintf(line, "%s:%d", msginfo->folder->path, msginfo->msgnum);
                debug_print("nfcp: checking <%s>", line->str);