--- sylpheed-2.2.4_orig/src/folderview.c	2006-03-27 06:30:25.000000000 +0200
+++ sylpheed-2.2.4/src/folderview.c	2006-03-29 12:36:30.000000000 +0200
@@ -231,6 +231,8 @@
 					  guint             info,
 					  guint             time,
 					  FolderView       *folderview);
+static void mark_all_read_cb(FolderView *folderview, guint action,
+				     GtkWidget *widget);
 
 static GtkTargetEntry folderview_drag_types[] =
 {
@@ -250,6 +252,7 @@
 					NULL, folderview_update_tree_cb, 0, NULL},
 	{N_("/R_ebuild folder tree"),	NULL, folderview_update_tree_cb, 1, NULL},
 	{N_("/_Update summary"),	NULL, folderview_update_summary_cb, 0, NULL},
+	{N_("/Mark _all read"),	NULL, mark_all_read_cb, 0, NULL},
 	{N_("/---"),			NULL, NULL, 0, "<Separator>"},
 	{N_("/_Search messages..."),	NULL, folderview_search_cb, 0, NULL},
 	{N_("/Ed_it search condition..."),
@@ -272,6 +275,7 @@
 					NULL, folderview_update_tree_cb, 0, NULL},
 	{N_("/R_ebuild folder tree"),	NULL, folderview_update_tree_cb, 1, NULL},
 	{N_("/_Update summary"),	NULL, folderview_update_summary_cb, 0, NULL},
+	{N_("/Mark _all read"),	NULL, mark_all_read_cb, 0, NULL},
 	{N_("/---"),			NULL, NULL, 0, "<Separator>"},
 	{N_("/_Search messages..."),	NULL, folderview_search_cb, 0, NULL},
 	{N_("/Ed_it search condition..."),
@@ -292,6 +296,7 @@
 	{N_("/_Check for new messages"),
 					NULL, folderview_update_tree_cb, 0, NULL},
 	{N_("/_Update summary"),	NULL, folderview_update_summary_cb, 0, NULL},
+	{N_("/Mark _all read"),	NULL, mark_all_read_cb, 0, NULL},
 	{N_("/---"),			NULL, NULL, 0, "<Separator>"},
 	{N_("/_Search messages..."),	NULL, folderview_search_cb, 0, NULL},
 	{N_("/Ed_it search condition..."),
@@ -1596,6 +1601,7 @@
 	gboolean remove_tree     = FALSE;
 	gboolean search_folder   = FALSE;
 	gboolean folder_property = FALSE;
+	gboolean mark_all_read   = FALSE;
 
 	if (!event) return FALSE;
 
@@ -1618,6 +1624,7 @@
 		if (item->parent == NULL) {
 			update_tree = remove_tree = TRUE;
 		} else {
+			mark_all_read = TRUE;
 			if (gtkut_tree_row_reference_equal
 				(folderview->selected, folderview->opened))
 				update_summary = TRUE;
@@ -1695,6 +1702,7 @@
 	SET_SENS(ifactory, "/Search messages...", search_folder);
 	SET_SENS(ifactory, "/Edit search condition...", search_folder);
 	SET_SENS(ifactory, "/Properties...", folder_property);
+	SET_SENS(ifactory, "/Mark all read", mark_all_read);
 
 	if (FOLDER_TYPE(folder) == F_NEWS) {
 		SET_SENS(ifactory, "/Subscribe to newsgroup...", new_folder);
@@ -3017,3 +3025,9 @@
 
 	return folder_item_compare(item_a, item_b);
 }
+
+static void mark_all_read_cb(FolderView *folderview, guint action,
+				     GtkWidget *widget)
+{
+	summary_mark_all_read(folderview->summaryview);
+}
