talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 73ae6b6b205c3a0cf61d4ac2e19566e459cd54ae
parent 1eb321597433fa8d044beabfa1c03fdf8bc284fd
Author: Paul Mangan <paul@claws-mail.org>
Date:   Wed, 12 Mar 2008 06:22:29 +0000

2008-03-12 [paul]	3.3.1cvs21

	* src/folder.c
	* src/folder.h
	* src/mainwindow.c
	* src/procmsg.c
	* src/summaryview.c
	* src/plugins/trayicon/trayicon.c
		add tooltip with extended folder stats

Diffstat:
MChangeLog | 10++++++++++
MPATCHSETS | 1+
Mconfigure.ac | 2+-
Msrc/folder.c | 112++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Msrc/folder.h | 11+++++++++--
Msrc/mainwindow.c | 9++++++---
Msrc/plugins/trayicon/trayicon.c | 7+++++--
Msrc/procmsg.c | 44++++++++++++++++++++++++++++++++++++++++++--
Msrc/summaryview.c | 76+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
9 files changed, 251 insertions(+), 21 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,13 @@ +2008-03-12 [paul] 3.3.1cvs21 + + * src/folder.c + * src/folder.h + * src/mainwindow.c + * src/procmsg.c + * src/summaryview.c + * src/plugins/trayicon/trayicon.c + add tooltip with extended folder stats + 2008-03-10 [colin] 3.3.1cvs20 * src/common/xml.c diff --git a/PATCHSETS b/PATCHSETS @@ -3255,3 +3255,4 @@ ( cvs diff -u -r 1.274.2.234 -r 1.274.2.235 src/mainwindow.c; ) > 3.3.1cvs18.patchset ( cvs diff -u -r 1.274.2.235 -r 1.274.2.236 src/mainwindow.c; ) > 3.3.1cvs19.patchset ( cvs diff -u -r 1.1.4.23 -r 1.1.4.24 src/common/xml.c; ) > 3.3.1cvs20.patchset +( cvs diff -u -r 1.213.2.178 -r 1.213.2.179 src/folder.c; cvs diff -u -r 1.87.2.56 -r 1.87.2.57 src/folder.h; cvs diff -u -r 1.274.2.236 -r 1.274.2.237 src/mainwindow.c; cvs diff -u -r 1.150.2.107 -r 1.150.2.108 src/procmsg.c; cvs diff -u -r 1.395.2.358 -r 1.395.2.359 src/summaryview.c; cvs diff -u -r 1.14.2.60 -r 1.14.2.61 src/plugins/trayicon/trayicon.c; ) > 3.3.1cvs21.patchset diff --git a/configure.ac b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=3 MICRO_VERSION=1 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=20 +EXTRA_VERSION=21 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/folder.c b/src/folder.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team + * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -352,6 +352,11 @@ FolderItem *folder_item_new(Folder *folder, const gchar *name, const gchar *path item->unreadmarked_msgs = 0; item->marked_msgs = 0; item->total_msgs = 0; + item->replied_msgs = 0; + item->forwarded_msgs = 0; + item->locked_msgs = 0; + item->ignored_msgs = 0; + item->watched_msgs = 0; item->order = 0; item->last_num = -1; item->cache = NULL; @@ -534,6 +539,16 @@ void folder_item_set_xml(Folder *folder, FolderItem *item, XMLTag *tag) item->unreadmarked_msgs = atoi(attr->value); else if (!strcmp(attr->name, "marked")) item->marked_msgs = atoi(attr->value); + else if (!strcmp(attr->name, "replied")) + item->replied_msgs = atoi(attr->value); + else if (!strcmp(attr->name, "forwarded")) + item->forwarded_msgs = atoi(attr->value); + else if (!strcmp(attr->name, "locked")) + item->locked_msgs = atoi(attr->value); + else if (!strcmp(attr->name, "ignored")) + item->ignored_msgs = atoi(attr->value); + else if (!strcmp(attr->name, "watched")) + item->watched_msgs = atoi(attr->value); else if (!strcmp(attr->name, "order")) item->order = atoi(attr->value); else if (!strcmp(attr->name, "total")) @@ -649,6 +664,11 @@ XMLTag *folder_item_get_xml(Folder *folder, FolderItem *item) xml_tag_add_attr(tag, xml_attr_new_int("unreadmarked", item->unreadmarked_msgs)); xml_tag_add_attr(tag, xml_attr_new_int("marked", item->marked_msgs)); xml_tag_add_attr(tag, xml_attr_new_int("total", item->total_msgs)); + xml_tag_add_attr(tag, xml_attr_new_int("replied", item->replied_msgs)); + xml_tag_add_attr(tag, xml_attr_new_int("forwarded", item->forwarded_msgs)); + xml_tag_add_attr(tag, xml_attr_new_int("locked", item->locked_msgs)); + xml_tag_add_attr(tag, xml_attr_new_int("ignore", item->ignored_msgs)); + xml_tag_add_attr(tag, xml_attr_new_int("watched", item->watched_msgs)); xml_tag_add_attr(tag, xml_attr_new_int("order", item->order)); if (item->account) @@ -989,6 +1009,11 @@ struct TotalMsgCount guint unreadmarked_msgs; guint marked_msgs; guint total_msgs; + guint replied_msgs; + guint forwarded_msgs; + guint locked_msgs; + guint ignored_msgs; + guint watched_msgs; }; struct FuncToAllFoldersData @@ -1040,6 +1065,11 @@ static void folder_count_total_msgs_func(FolderItem *item, gpointer data) count->unreadmarked_msgs += item->unreadmarked_msgs; count->marked_msgs += item->marked_msgs; count->total_msgs += item->total_msgs; + count->replied_msgs += item->replied_msgs; + count->forwarded_msgs += item->forwarded_msgs; + count->locked_msgs += item->locked_msgs; + count->ignored_msgs += item->ignored_msgs; + count->watched_msgs += item->watched_msgs; } struct TotalMsgStatus @@ -1151,11 +1181,16 @@ gchar *folder_get_status(GPtrArray *folders, gboolean full) void folder_count_total_msgs(guint *new_msgs, guint *unread_msgs, guint *unreadmarked_msgs, guint *marked_msgs, - guint *total_msgs) + guint *total_msgs, guint *replied_msgs, + guint *forwarded_msgs, guint *locked_msgs, + guint *ignored_msgs, guint *watched_msgs) { struct TotalMsgCount count; - count.new_msgs = count.unread_msgs = count.unreadmarked_msgs = count.total_msgs = 0; + count.new_msgs = count.unread_msgs = count.unreadmarked_msgs = 0; + count.total_msgs = count.replied_msgs = count.forwarded_msgs = 0; + count.locked_msgs = count.ignored_msgs = count.watched_msgs = 0; + count.marked_msgs = 0; debug_print("Counting total number of messages...\n"); @@ -1166,6 +1201,11 @@ void folder_count_total_msgs(guint *new_msgs, guint *unread_msgs, *unreadmarked_msgs = count.unreadmarked_msgs; *marked_msgs = count.marked_msgs; *total_msgs = count.total_msgs; + *replied_msgs = count.replied_msgs; + *forwarded_msgs = count.forwarded_msgs; + *locked_msgs = count.locked_msgs; + *ignored_msgs = count.ignored_msgs; + *watched_msgs = count.watched_msgs; } Folder *folder_find_from_path(const gchar *path) @@ -1968,6 +2008,9 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering) GSList *newmsg_list = NULL; guint newcnt = 0, unreadcnt = 0, totalcnt = 0; guint markedcnt = 0, unreadmarkedcnt = 0; + guint repliedcnt = 0, forwardedcnt = 0; + guint lockedcnt = 0, ignoredcnt = 0, watchedcnt = 0; + guint cache_max_num, folder_max_num, cache_cur_num, folder_cur_num; gboolean update_flags = 0, old_uids_valid = FALSE; GHashTable *subject_table = NULL; @@ -2263,6 +2306,16 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering) unreadmarkedcnt++; if (MSG_IS_MARKED(msginfo->flags)) markedcnt++; + if (MSG_IS_REPLIED(msginfo->flags)) + repliedcnt++; + if (MSG_IS_FORWARDED(msginfo->flags)) + forwardedcnt++; + if (MSG_IS_LOCKED(msginfo->flags)) + lockedcnt++; + if (MSG_IS_IGNORE_THREAD(msginfo->flags)) + ignoredcnt++; + if (MSG_IS_WATCH_THREAD(msginfo->flags)) + watchedcnt++; totalcnt++; @@ -2277,7 +2330,10 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering) if (item->new_msgs != newcnt || item->unread_msgs != unreadcnt || item->total_msgs != totalcnt || item->marked_msgs != markedcnt - || item->unreadmarked_msgs != unreadmarkedcnt) { + || item->unreadmarked_msgs != unreadmarkedcnt + || item->replied_msgs != repliedcnt || item->forwarded_msgs != forwardedcnt + || item->locked_msgs != lockedcnt || item->ignored_msgs != ignoredcnt + || item->watched_msgs != watchedcnt) { update_flags |= F_ITEM_UPDATE_CONTENT; } @@ -2286,6 +2342,11 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering) item->total_msgs = totalcnt; item->unreadmarked_msgs = unreadmarkedcnt; item->marked_msgs = markedcnt; + item->replied_msgs = repliedcnt; + item->forwarded_msgs = forwardedcnt; + item->locked_msgs = lockedcnt; + item->ignored_msgs = ignoredcnt; + item->watched_msgs = watchedcnt; update_flags |= F_ITEM_UPDATE_MSGCNT; @@ -2449,6 +2510,9 @@ static void folder_item_read_cache(FolderItem *item) MsgInfoList *list, *cur; guint newcnt = 0, unreadcnt = 0; guint markedcnt = 0, unreadmarkedcnt = 0; + guint repliedcnt = 0, forwardedcnt = 0; + guint lockedcnt = 0, ignoredcnt = 0; + guint watchedcnt = 0; MsgInfo *msginfo; item->cache = msgcache_new(); @@ -2468,12 +2532,27 @@ static void folder_item_read_cache(FolderItem *item) unreadmarkedcnt++; if (MSG_IS_MARKED(msginfo->flags)) markedcnt++; + if (MSG_IS_REPLIED(msginfo->flags)) + repliedcnt++; + if (MSG_IS_FORWARDED(msginfo->flags)) + forwardedcnt++; + if (MSG_IS_LOCKED(msginfo->flags)) + lockedcnt++; + if (MSG_IS_IGNORE_THREAD(msginfo->flags)) + ignoredcnt++; + if (MSG_IS_WATCH_THREAD(msginfo->flags)) + watchedcnt++; procmsg_msginfo_unset_flags(msginfo, MSG_FULLY_CACHED, 0); } item->new_msgs = newcnt; item->unread_msgs = unreadcnt; item->unreadmarked_msgs = unreadmarkedcnt; item->marked_msgs = markedcnt; + item->replied_msgs = repliedcnt; + item->forwarded_msgs = forwardedcnt; + item->locked_msgs = lockedcnt; + item->ignored_msgs = ignoredcnt; + item->watched_msgs = watchedcnt; procmsg_msg_list_free(list); } else msgcache_read_mark(item->cache, mark_file); @@ -2831,6 +2910,16 @@ static void add_msginfo_to_cache(FolderItem *item, MsgInfo *newmsginfo, MsgInfo item->unreadmarked_msgs++; if (MSG_IS_MARKED(newmsginfo->flags)) item->marked_msgs++; + if (MSG_IS_REPLIED(newmsginfo->flags)) + item->replied_msgs++; + if (MSG_IS_FORWARDED(newmsginfo->flags)) + item->forwarded_msgs++; + if (MSG_IS_LOCKED(newmsginfo->flags)) + item->locked_msgs++; + if (MSG_IS_IGNORE_THREAD(newmsginfo->flags)) + item->ignored_msgs++; + if (MSG_IS_WATCH_THREAD(newmsginfo->flags)) + item->watched_msgs++; item->total_msgs++; folder_item_update_freeze(); @@ -2859,6 +2948,16 @@ static void remove_msginfo_from_cache(FolderItem *item, MsgInfo *msginfo) msginfo->folder->unreadmarked_msgs--; if (MSG_IS_MARKED(msginfo->flags)) item->marked_msgs--; + if (MSG_IS_REPLIED(msginfo->flags)) + item->replied_msgs--; + if (MSG_IS_FORWARDED(msginfo->flags)) + item->forwarded_msgs--; + if (MSG_IS_LOCKED(msginfo->flags)) + item->locked_msgs--; + if (MSG_IS_IGNORE_THREAD(msginfo->flags)) + item->ignored_msgs--; + if (MSG_IS_WATCH_THREAD(msginfo->flags)) + item->watched_msgs--; msginfo->folder->total_msgs--; @@ -3536,6 +3635,11 @@ gint folder_item_remove_all_msg(FolderItem *item) item->unreadmarked_msgs = 0; item->marked_msgs = 0; item->total_msgs = 0; + item->replied_msgs = 0; + item->forwarded_msgs = 0; + item->locked_msgs = 0; + item->ignored_msgs = 0; + item->watched_msgs = 0; folder_item_update(item, F_ITEM_UPDATE_MSGCNT | F_ITEM_UPDATE_CONTENT); } diff --git a/src/folder.h b/src/folder.h @@ -2,7 +2,7 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team + * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -645,6 +645,11 @@ struct _FolderItem gint total_msgs; gint unreadmarked_msgs; gint marked_msgs; + gint replied_msgs; + gint forwarded_msgs; + gint locked_msgs; + gint ignored_msgs; + gint watched_msgs; gint order; @@ -770,7 +775,9 @@ void folder_func_to_all_folders (FolderItemFunc function, gpointer data); void folder_count_total_msgs(guint *new_msgs, guint *unread_msgs, guint *unreadmarked_msgs, guint *marked_msgs, - guint *total_msgs); + guint *total_msgs, guint *replied_msgs, + guint *forwarded_msgs, guint *locked_msgs, + guint *ignored_msgs, guint *watched_msgs); gchar *folder_get_status (GPtrArray *folders, gboolean full); diff --git a/src/mainwindow.c b/src/mainwindow.c @@ -1,6 +1,6 @@ /* Claws Mail -- a GTK+ based, lightweight, and fast e-mail client - Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team + Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1447,9 +1447,12 @@ void mainwindow_maemo_led_set(gboolean state) { static void led_update(FolderItem *removed_item) { - guint new, unread, unreadmarked, marked, total; + guint new, unread, unreadmarked, marked, total, replied; + guint forwarded, locked, ignored, watched; - folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total); + folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total, + &replied, &forwarded, &locked, &ignored, + &watched); if (removed_item) { total -= removed_item->total_msgs; new -= removed_item->new_msgs; diff --git a/src/plugins/trayicon/trayicon.c b/src/plugins/trayicon/trayicon.c @@ -1,6 +1,6 @@ /* * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 2003-2007 the Claws Mail Team + * Copyright (C) 2003-2008 the Claws Mail Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -186,10 +186,13 @@ static void set_trayicon_pixmap(TrayIconType icontype) static void update(FolderItem *removed_item) { guint new, unread, unreadmarked, marked, total; + guint replied, forwarded, locked, ignored, watched; gchar *buf; TrayIconType icontype = TRAYICON_NOTHING; - folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total); + folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total, + &replied, &forwarded, &locked, &ignored, + &watched); if (removed_item) { total -= removed_item->total_msgs; new -= removed_item->new_msgs; diff --git a/src/procmsg.c b/src/procmsg.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team + * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -1842,6 +1842,46 @@ static void update_folder_msg_counts(FolderItem *item, MsgInfo *msginfo, MsgPerm procmsg_update_unread_children(msginfo, FALSE); item->marked_msgs--; } + + if (!(old_flags & MSG_REPLIED) && (new_flags & MSG_REPLIED)) { + item->replied_msgs++; + } + + if ((old_flags & MSG_REPLIED) && !(new_flags & MSG_REPLIED)) { + item->replied_msgs--; + } + + if (!(old_flags & MSG_FORWARDED) && (new_flags & MSG_FORWARDED)) { + item->forwarded_msgs++; + } + + if ((old_flags & MSG_FORWARDED) && !(new_flags & MSG_FORWARDED)) { + item->forwarded_msgs--; + } + + if (!(old_flags & MSG_LOCKED) && (new_flags & MSG_LOCKED)) { + item->locked_msgs++; + } + + if ((old_flags & MSG_LOCKED) && !(new_flags & MSG_LOCKED)) { + item->locked_msgs--; + } + + if ((old_flags & MSG_IGNORE_THREAD) && !(new_flags & MSG_IGNORE_THREAD)) { + item->ignored_msgs--; + } + + if (!(old_flags & MSG_IGNORE_THREAD) && (new_flags & MSG_IGNORE_THREAD)) { + item->ignored_msgs++; + } + + if ((old_flags & MSG_WATCH_THREAD) && !(new_flags & MSG_WATCH_THREAD)) { + item->watched_msgs--; + } + + if (!(old_flags & MSG_WATCH_THREAD) && (new_flags & MSG_WATCH_THREAD)) { + item->watched_msgs++; + } } void procmsg_msginfo_set_flags(MsgInfo *msginfo, MsgPermFlags perm_flags, MsgTmpFlags tmp_flags) @@ -1871,7 +1911,7 @@ void procmsg_msginfo_set_flags(MsgInfo *msginfo, MsgPermFlags perm_flags, MsgTmp folder_item_change_msg_flags(msginfo->folder, msginfo, perm_flags_new); update_folder_msg_counts(item, msginfo, perm_flags_old); - + summary_update_unread(mainwindow_get_mainwindow()->summaryview, NULL); } /* Tmp flags handling */ diff --git a/src/summaryview.c b/src/summaryview.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team + * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -1093,7 +1093,7 @@ static gboolean summaryview_quicksearch_recurse(gpointer data) static gboolean summary_check_consistency(FolderItem *item, GSList *mlist) { - int u = 0, n = 0, m = 0, t = 0; + int u = 0, n = 0, m = 0, t = 0, r = 0, f = 0, l = 0, i = 0, w = 0; GSList *cur; START_TIMING(""); for(cur = mlist ; cur != NULL && cur->data != NULL ; cur = g_slist_next(cur)) { @@ -1105,11 +1105,26 @@ static gboolean summary_check_consistency(FolderItem *item, GSList *mlist) u++; if (MSG_IS_MARKED(msginfo->flags)) m++; + if (MSG_IS_REPLIED(msginfo->flags)) + r++; + if (MSG_IS_FORWARDED(msginfo->flags)) + f++; + if (MSG_IS_LOCKED(msginfo->flags)) + l++; + if (MSG_IS_IGNORE_THREAD(msginfo->flags)) + i++; + if (MSG_IS_WATCH_THREAD(msginfo->flags)) + w++; } if (t != item->total_msgs || n != item->new_msgs || u != item->unread_msgs || m != item->marked_msgs + || r != item->replied_msgs + || f != item->forwarded_msgs + || l != item->locked_msgs + || i != item->ignored_msgs + || w != item->watched_msgs || (m == 0 && item->unreadmarked_msgs != 0) || item->unreadmarked_msgs < 0) { debug_print("Inconsistency\n"); @@ -2416,9 +2431,11 @@ static void summary_status_show(SummaryView *summaryview) gchar *itstr; GList *rowlist, *cur; guint n_selected = 0, n_new = 0, n_unread = 0, n_total = 0; + guint n_marked = 0, n_replied = 0, n_forwarded = 0, n_locked = 0, n_ignored = 0, n_watched = 0; off_t sel_size = 0, n_size = 0; MsgInfo *msginfo; gchar *name; + gchar *tooltip; if (!summaryview->folder_item) { gtk_label_set_text(GTK_LABEL(summaryview->statlabel_folder), ""); @@ -2453,11 +2470,29 @@ static void summary_status_show(SummaryView *summaryview) n_new++; if (MSG_IS_UNREAD(msginfo->flags)) n_unread++; + if (MSG_IS_MARKED(msginfo->flags)) + n_marked++; + if (MSG_IS_REPLIED(msginfo->flags)) + n_replied++; + if (MSG_IS_FORWARDED(msginfo->flags)) + n_forwarded++; + if (MSG_IS_LOCKED(msginfo->flags)) + n_locked++; + if (MSG_IS_IGNORE_THREAD(msginfo->flags)) + n_ignored++; + if (MSG_IS_WATCH_THREAD(msginfo->flags)) + n_watched++; } } } else { n_new = summaryview->folder_item->new_msgs; n_unread = summaryview->folder_item->unread_msgs; + n_marked = summaryview->folder_item->marked_msgs; + n_replied = summaryview->folder_item->replied_msgs; + n_forwarded = summaryview->folder_item->forwarded_msgs; + n_locked = summaryview->folder_item->locked_msgs; + n_ignored = summaryview->folder_item->ignored_msgs; + n_watched = summaryview->folder_item->watched_msgs; n_total = summaryview->folder_item->total_msgs; n_size = summaryview->total_size; } @@ -2513,11 +2548,31 @@ static void summary_status_show(SummaryView *summaryview) g_free(str); str = g_strdup_printf(_("%d new, %d unread, %d total (%s)"), - n_new, n_unread, n_total, to_human_readable(n_size)); + gtk_label_set_text(GTK_LABEL(summaryview->statlabel_msgs), str); +#if GTK_CHECK_VERSION(2, 12, 0) + tooltip = g_strdup_printf(_("<b>Message summary</b>\n" + "<b>New:</b> %d\n" + "<b>Unread:</b> %d\n" + "<b>Total:</b> %d\n" + "<b>Size:</b> %s\n\n" + "<b>Marked:</b> %d\n" + "<b>Replied:</b> %d\n" + "<b>Forwarded:</b> %d\n" + "<b>Locked:</b> %d\n" + "<b>Ignored:</b> %d\n" + "<b>Watched:</b> %d"), + n_new, n_unread, n_total, + to_human_readable(n_size), + n_marked,n_replied,n_forwarded, + n_locked,n_ignored,n_watched); + + gtk_widget_set_tooltip_markup(GTK_WIDGET(summaryview->statlabel_msgs), + tooltip); +#endif g_free(str); } else { gchar *ssize, *tsize; @@ -6431,8 +6486,10 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row, !MSG_IS_COPY(msginfo->flags)) { if (MSG_IS_MARKED(msginfo->flags)) { summary_unmark_row(summaryview, row); + summary_status_show(summaryview); } else { summary_mark_row(summaryview, row); + summary_status_show(summaryview); } } break; @@ -6455,11 +6512,13 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row, break; case S_COL_LOCKED: if (MSG_IS_LOCKED(msginfo->flags)) { - summary_msginfo_unset_flags(msginfo, MSG_LOCKED, 0); - summary_set_row_marks(summaryview, row); + summary_unlock_row(summaryview, row); + summary_status_show(summaryview); } - else + else { summary_lock_row(summaryview, row); + summary_status_show(summaryview); + } break; default: break; @@ -7392,6 +7451,7 @@ static gboolean summary_update_msg(gpointer source, gpointer data) void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item) { guint new, unread, unreadmarked, marked, total; + guint replied, forwarded, locked, ignored, watched; static gboolean tips_initialized = FALSE; if (prefs_common.layout_mode != SMALL_LAYOUT) { @@ -7404,7 +7464,9 @@ void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item) } return; } - folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total); + folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total, + &replied, &forwarded, &locked, &ignored, + &watched); if (removed_item) { total -= removed_item->total_msgs; new -= removed_item->new_msgs;