gint width,
FolderView *folderview);
+static void mark_all_read_handler (GtkAction *action,
+ gpointer data,
+ gboolean recursive);
+
static void mark_all_read_cb (GtkAction *action,
gpointer data);
+static void mark_all_read_recursive_cb (GtkAction *action,
+ gpointer data);
static void folderview_empty_trash_cb (GtkAction *action,
gpointer data);
{
{"FolderViewPopup", NULL, "FolderViewPopup" },
{"FolderViewPopup/MarkAllRead", NULL, N_("Mark all re_ad"), NULL, NULL, G_CALLBACK(mark_all_read_cb) },
+ {"FolderViewPopup/MarkAllReadRec", NULL, N_("Mark all read recursi_ve"), NULL, NULL, G_CALLBACK(mark_all_read_recursive_cb) },
{"FolderViewPopup/---", NULL, "---" },
{"FolderViewPopup/RunProcessing", NULL, N_("R_un processing rules"), NULL, NULL, G_CALLBACK(folderview_run_processing_cb) },
{"FolderViewPopup/SearchFolder", NULL, N_("_Search folder..."), NULL, NULL, G_CALLBACK(folderview_search_cb) },
}
static void mark_all_read_cb(GtkAction *action, gpointer data)
+{
+ mark_all_read_handler(action, data, FALSE);
+}
+
+static void mark_all_read_recursive_cb(GtkAction *action, gpointer data)
+{
+ mark_all_read_handler(action, data, TRUE);
+}
+
+static void mark_all_read_handler(GtkAction *action, gpointer data, gboolean recursive)
{
FolderView *folderview = (FolderView *)data;
FolderItem *item;
folder_item_update_freeze();
- if (folderview->summaryview->folder_item != item)
+ if (folderview->summaryview->folder_item != item && !recursive)
summary_lock(folderview->summaryview);
else
summary_freeze(folderview->summaryview);
- folderutils_mark_all_read(item);
+ if (recursive)
+ folderutils_mark_all_read_recursive(item);
+ else
+ folderutils_mark_all_read(item);
- if (folderview->summaryview->folder_item != item)
+ if (folderview->summaryview->folder_item != item && !recursive)
summary_unlock(folderview->summaryview);
else
summary_thaw(folderview->summaryview);
fpopup->add_menuitems(ui_manager, item);
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "MarkAllRead", "FolderViewPopup/MarkAllRead", GTK_UI_MANAGER_MENUITEM)
+ MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "MarkAllReadRec", "FolderViewPopup/MarkAllReadRec", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Separator1", "FolderViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "RunProcessing", "FolderViewPopup/RunProcessing", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "SearchFolder", "FolderViewPopup/SearchFolder", GTK_UI_MANAGER_MENUITEM)
cm_menu_set_sensitive_full(ui_manager, "Popup/"name, sens)
SET_SENS("FolderViewPopup/MarkAllRead", item->unread_msgs >= 1);
+ SET_SENS("FolderViewPopup/MarkAllReadRec", folderview_have_unread_children(folderview,item));
SET_SENS("FolderViewPopup/SearchFolder", item->total_msgs >= 1 &&
folderview->selected == folderview->opened);
SET_SENS("FolderViewPopup/Properties", TRUE);