+void summary_mark_as_spam(SummaryView *summaryview, guint action, GtkWidget *widget)
+{
+ GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
+ GList *cur;
+ gboolean is_spam = action;
+ GSList *msgs = NULL;
+ gboolean immediate_exec = prefs_common.immediate_exec;
+
+ prefs_common.immediate_exec = FALSE;
+
+ START_LONG_OPERATION(summaryview);
+
+ for (cur = GTK_CLIST(ctree)->selection; cur != NULL && cur->data != NULL; cur = cur->next) {
+ GtkCTreeNode *row = GTK_CTREE_NODE(cur->data);
+ MsgInfo *msginfo = gtk_ctree_node_get_row_data(ctree, row);
+ if (is_spam) {
+ summary_msginfo_change_flags(msginfo, MSG_SPAM, 0, MSG_NEW|MSG_UNREAD, 0);
+ summary_move_row_to(summaryview, row, procmsg_spam_get_folder());
+ } else {
+ summary_msginfo_unset_flags(msginfo, MSG_SPAM, 0);
+ }
+ msgs = g_slist_prepend(msgs, msginfo);
+ }
+
+ procmsg_spam_learner_learn(NULL, msgs, is_spam);
+ g_slist_free(msgs);
+
+ prefs_common.immediate_exec = immediate_exec;
+
+ END_LONG_OPERATION(summaryview);
+
+ if (prefs_common.immediate_exec) {
+ summary_execute(summaryview);
+ }
+
+ summary_status_show(summaryview);
+}
+
+