#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;
void summary_init(SummaryView *summaryview)
{
+ static GdkFont *boldfont = NULL;
+ static GdkFont *smallfont = NULL;
GtkStyle *style;
GtkWidget *pixmap;
+ gtk_widget_realize(summaryview->ctree);
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_MARK,
&markxpm, &markxpmmask);
stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_DELETED,
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));
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);
summary_clear_list(summaryview);
summary_set_column_titles(summaryview);
- if (!is_refresh)
- messageview_clear(summaryview->messageview);
buf = NULL;
if (!item || !item->path || !item->parent || item->no_select) {
g_free(buf);
debug_print("empty folder\n\n");
summary_set_hide_read_msgs_menu(summaryview, FALSE);
- if (is_refresh)
- messageview_clear(summaryview->messageview);
summary_clear_all(summaryview);
summaryview->folder_item = item;
gtk_clist_thaw(GTK_CLIST(ctree));
}
g_free(buf);
+ if (!is_refresh)
+ messageview_clear(summaryview->messageview);
+
summaryview->folder_item = item;
item->opened = TRUE;
STATUSBAR_POP(summaryview->mainwin);
- /* set ctree and hash table from the msginfo list
- creating thread, and count the number of messages */
-
+ /* set ctree and hash table from the msginfo list, and
+ create the thread */
summary_set_ctree_from_list(summaryview, mlist);
g_slist_free(mlist);
summaryview->display_msg = FALSE;
- summaryview->selected = NULL;
+ summaryview->selected = NULL;
summaryview->displayed = NULL;
- summaryview->newmsgs = summaryview->unread = 0;
- summaryview->messages = summaryview->total_size = 0;
- summaryview->deleted = summaryview->moved = 0;
- summaryview->copied = 0;
+ summaryview->total_size = 0;
+ summaryview->deleted = summaryview->moved = 0;
+ summaryview->copied = 0;
if (summaryview->msgid_table) {
g_hash_table_destroy(summaryview->msgid_table);
summaryview->msgid_table = NULL;
void summary_clear_all(SummaryView *summaryview)
{
+ messageview_clear(summaryview->messageview);
summary_clear_list(summaryview);
summary_set_menu_sensitive(summaryview);
toolbar_main_set_sensitive(summaryview->mainwin);
{"/View/Source" , M_SINGLE_TARGET_EXIST},
{"/View/All header" , M_SINGLE_TARGET_EXIST},
- {"/Save as..." , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
+ {"/Save as..." , M_TARGET_EXIST|M_UNLOCKED},
{"/Print..." , M_TARGET_EXIST|M_UNLOCKED},
{"/Select thread" , M_SINGLE_TARGET_EXIST},
+ {"/Select all" , M_TARGET_EXIST},
{NULL, 0}
};
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_NEW(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->newmsgs++;
- if (MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->unread++;
if (MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags)
&& procmsg_msg_has_marked_parent(msginfo))
summaryview->unreadmarked++;
if (MSG_IS_DELETED(msginfo->flags))
summaryview->deleted++;
- summaryview->messages++;
summaryview->total_size += msginfo->size;
summary_set_row_marks(summaryview, node);
GtkCTreeNode *node;
MsgInfo *msginfo;
- summaryview->newmsgs = summaryview->unread =
- summaryview->messages = summaryview->total_size =
+ summaryview->total_size =
summaryview->deleted = summaryview->moved = summaryview->copied = 0;
for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
node != NULL; node = gtkut_ctree_node_next(ctree, node)) {
msginfo = GTKUT_CTREE_NODE_GET_ROW_DATA(node);
- if (MSG_IS_NEW(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->newmsgs++;
- if (MSG_IS_UNREAD(msginfo->flags)&& !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->unread++;
if (MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags)
&& procmsg_msg_has_marked_parent(msginfo))
summaryview->unreadmarked++;
summaryview->moved++;
if (MSG_IS_COPY(msginfo->flags))
summaryview->copied++;
- summaryview->messages++;
summaryview->total_size += msginfo->size;
}
}
g_free(itstr);
str = g_strdup_printf(_("%d new, %d unread, %d total (%s)"),
- summaryview->newmsgs,
- summaryview->unread,
- summaryview->messages,
- to_human_readable(summaryview->total_size));
+ summaryview->folder_item->new_msgs,
+ summaryview->folder_item->unread_msgs,
+ summaryview->folder_item->total_msgs,
+ to_human_readable(summaryview->total_size));
gtk_label_set(GTK_LABEL(summaryview->statlabel_msgs), str);
g_free(str);
}
msginfo = gtk_ctree_node_get_row_data(ctree, row);
if (new_window || !prefs_common.mark_as_read_on_new_window) {
- if (MSG_IS_NEW(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->newmsgs--;
- if (MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->unread--;
if (MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags)
&& procmsg_msg_has_marked_parent(msginfo))
summaryview->unreadmarked--;
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)
}
gtk_ctree_node_set_foreground
(ctree, row, &summaryview->color_dim);
+ } else if (MSG_IS_MARKED(flags)) {
+ gtk_ctree_node_set_pixmap(ctree, row, col_pos[S_COL_MARK],
+ markxpm, markxpmmask);
} else if (MSG_IS_MOVE(flags)) {
gtk_ctree_node_set_text(ctree, row, col_pos[S_COL_MARK], "o");
if (style)
gtk_ctree_node_set_text(ctree, row, S_COL_MARK, "!");
gtk_ctree_node_set_foreground(ctree, row,
&summaryview->color_important);
- } else if (MSG_IS_MARKED(flags)) {
- gtk_ctree_node_set_pixmap(ctree, row, col_pos[S_COL_MARK],
- markxpm, markxpmmask);
} else {
gtk_ctree_node_set_text(ctree, row, col_pos[S_COL_MARK], NULL);
}
if(!(MSG_IS_NEW(msginfo->flags) || MSG_IS_UNREAD(msginfo->flags)))
return;
- if (MSG_IS_NEW(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->newmsgs--;
- if (MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->unread--;
if (MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags)
&& procmsg_msg_has_marked_parent(msginfo))
summaryview->unreadmarked--;
summaryview->deleted--;
}
- if (!MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags))
- summaryview->unread++;
-
if (!MSG_IS_UNREAD(msginfo->flags) && !MSG_IS_IGNORE_THREAD(msginfo->flags)
&& procmsg_msg_has_marked_parent(msginfo))
summaryview->unreadmarked++;
void summary_select_all(SummaryView *summaryview)
{
- if (summaryview->messages >= 500) {
+ if (!summaryview->folder_item) return;
+
+ if (summaryview->folder_item->total_msgs >= 500) {
STATUSBAR_PUSH(summaryview->mainwin,
_("Selecting all messages..."));
main_window_cursor_wait(summaryview->mainwin);
gtk_clist_select_all(GTK_CLIST(summaryview->ctree));
- if (summaryview->messages >= 500) {
+ if (summaryview->folder_item->total_msgs >= 500) {
STATUSBAR_POP(summaryview->mainwin);
main_window_cursor_normal(summaryview->mainwin);
}
folder_item_remove_msgs(summaryview->folder_item,
summaryview->mlist);
else
- folder_item_move_msgs_with_dest(trash, summaryview->mlist);
+ folder_item_move_msgs(trash, summaryview->mlist);
for (cur = summaryview->mlist; cur != NULL; cur = cur->next)
procmsg_msginfo_free((MsgInfo *)cur->data);
#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)
{
summary_mark_as_unread(summaryview);
break;
case GDK_Delete:
- RETURN_IF_LOCKED();
BREAK_ON_MODIFIER_KEY();
summary_delete(summaryview);
break;
{
SummaryView *summaryview = (SummaryView *)data;
GtkWidget *hbox= summaryview->hbox_search;
- GtkAllocation size = hbox->allocation;
- GtkAllocation msgview_size = summaryview->messageview->vbox->allocation;
- GtkAllocation parent_size = summaryview->vbox->allocation;
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
prefs_common.show_searchbar = TRUE;
gtk_widget_show(hbox);
- if (!prefs_common.sep_msg && messageview_is_visible(summaryview->messageview)
- && msgview_size.height > 1 && parent_size.height > 1) {
- gtk_widget_set_usize(GTK_WIDGET(summaryview->messageview->vbox),
- -1,msgview_size.height - size.height - SUMMARY_VBOX_SPACING);
- gtk_widget_set_usize(GTK_WIDGET(summaryview->vbox),
- -1,parent_size.height + size.height + SUMMARY_VBOX_SPACING);
- gtk_paned_set_position(GTK_PANED(summaryview->vbox->parent),-1);
- }
} else {
prefs_common.show_searchbar = FALSE;
gtk_widget_hide(hbox);
- if (!prefs_common.sep_msg && messageview_is_visible(summaryview->messageview)
- && msgview_size.height > 1 && parent_size.height > 1) {
- gtk_widget_set_usize(GTK_WIDGET(summaryview->messageview->vbox),
- -1,msgview_size.height + size.height + SUMMARY_VBOX_SPACING);
- gtk_widget_set_usize(GTK_WIDGET(summaryview->vbox),
- -1,parent_size.height - size.height - SUMMARY_VBOX_SPACING);
- gtk_paned_set_position(GTK_PANED(summaryview->vbox->parent),-1);
- }
}
}
GString *line;
gpointer key;
gpointer value;
- Folder *mff = msginfo->folder->folder;
+ Folder *mff;
- if (mff->account->mark_crosspost_read && MSG_IS_NEWS(msginfo->flags)) {
+ 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) {
line = g_string_sized_new(128);
g_string_sprintf(line, "%s:%d", msginfo->folder->path, msginfo->msgnum);
debug_print("nfcp: checking <%s>", line->str);
msginfo = gtk_ctree_node_get_row_data(ctree, row);
- if (MSG_IS_NEW(msginfo->flags))
- summaryview->newmsgs--;
- if (MSG_IS_UNREAD(msginfo->flags))
- summaryview->unread--;
if (MSG_IS_UNREAD(msginfo->flags) && procmsg_msg_has_marked_parent(msginfo))
summaryview->unreadmarked--;
msginfo = gtk_ctree_node_get_row_data(ctree, row);
- if (MSG_IS_NEW(msginfo->flags))
- summaryview->newmsgs++;
- if (MSG_IS_UNREAD(msginfo->flags))
- summaryview->unread++;
if (MSG_IS_UNREAD(msginfo->flags) && procmsg_msg_has_marked_parent(msginfo))
summaryview->unreadmarked++;
g_return_val_if_fail(msginfo_update != NULL, TRUE);
g_return_val_if_fail(summaryview != NULL, FALSE);
- node = gtk_ctree_find_by_row_data(GTK_CTREE(summaryview->ctree), NULL, msginfo_update->msginfo);
-
- if (node)
- summary_set_row_marks(summaryview, node);
+ if (msginfo_update->flags & MSGINFO_UPDATE_FLAGS) {
+ node = gtk_ctree_find_by_row_data(GTK_CTREE(summaryview->ctree), NULL, msginfo_update->msginfo);
+
+ if (node)
+ summary_set_row_marks(summaryview, node);
+ }
return FALSE;
}