main_window_cursor_wait(summaryview->mainwin); \
gtk_clist_freeze(GTK_CLIST(summaryview->ctree)); \
folder_item_update_freeze(); \
+ inc_lock(); \
}
#define END_LONG_OPERATION(summaryview) { \
+ inc_unlock(); \
folder_item_update_thaw(); \
gtk_clist_thaw(GTK_CLIST(summaryview->ctree)); \
main_window_cursor_normal(summaryview->mainwin); \
displayed_msgnum);
if (!summaryview->displayed)
messageview_clear(summaryview->messageview);
+ summary_unlock(summaryview);
summary_select_by_msgnum(summaryview, selected_msgnum);
+ summary_lock(summaryview);
if (!summaryview->selected) {
/* no selected message - select first unread
message, but do not display it */
(ctree,
item->sort_type == SORT_DESCENDING
? 0 : GTK_CLIST(ctree)->rows - 1);
+ summary_unlock(summaryview);
summary_select_node(summaryview, node, FALSE, TRUE);
+ summary_lock(summaryview);
}
} else {
/* select first unread message */
-#if 0
- if (summaryview->sort_key == SORT_BY_SCORE)
- node = summary_find_next_important_score(summaryview,
- NULL);
- else
-#endif
node = summary_find_next_flagged_msg(summaryview, NULL,
MSG_UNREAD, FALSE);
if (node == NULL && GTK_CLIST(ctree)->row_list != NULL) {
TRUE);
summary_lock(summaryview);
} else {
- summary_unlock(summaryview);
summary_select_node(summaryview, node, FALSE, TRUE);
- summary_lock(summaryview);
}
}
if (summaryview->displayed
&& summaryview->selected == summaryview->displayed) {
- debug_print("skipping cur\n");
+ debug_print("skipping cur (%p %p)\n",
+ summaryview->displayed, summaryview->selected);
skip_cur = TRUE;
}
summaryview->displayed = NULL;
summaryview->display_msg = display_msg;
gtk_sctree_select(GTK_SCTREE(ctree), node);
+ if (summaryview->selected == NULL)
+ summaryview->selected = node;
}
}
GList *cur;
START_LONG_OPERATION(summaryview);
+ folder_item_set_batch(summaryview->folder_item, TRUE);
for (cur = GTK_CLIST(ctree)->selection; cur != NULL && cur->data != NULL; cur = cur->next)
summary_mark_row(summaryview, GTK_CTREE_NODE(cur->data));
+ folder_item_set_batch(summaryview->folder_item, FALSE);
END_LONG_OPERATION(summaryview);
summary_status_show(summaryview);
GList *cur;
START_LONG_OPERATION(summaryview);
+ folder_item_set_batch(summaryview->folder_item, TRUE);
for (cur = GTK_CLIST(ctree)->selection; cur != NULL && cur->data != NULL; cur = cur->next)
summary_mark_row_as_read(summaryview,
GTK_CTREE_NODE(cur->data));
+ folder_item_set_batch(summaryview->folder_item, FALSE);
END_LONG_OPERATION(summaryview);
summary_status_show(summaryview);
GtkCTreeNode *node;
START_LONG_OPERATION(summaryview);
+ folder_item_set_batch(summaryview->folder_item, TRUE);
for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list); node != NULL;
node = gtkut_ctree_node_next(ctree, node))
summary_mark_row_as_read(summaryview, node);
+ folder_item_set_batch(summaryview->folder_item, FALSE);
for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list); node != NULL;
node = gtkut_ctree_node_next(ctree, node)) {
if (!GTK_CTREE_ROW(node)->expanded)
GList *cur;
START_LONG_OPERATION(summaryview);
+ folder_item_set_batch(summaryview->folder_item, TRUE);
for (cur = GTK_CLIST(ctree)->selection; cur != NULL && cur->data != NULL;
cur = cur->next)
summary_mark_row_as_unread(summaryview,
GTK_CTREE_NODE(cur->data));
+ folder_item_set_batch(summaryview->folder_item, FALSE);
END_LONG_OPERATION(summaryview);
summary_status_show(summaryview);
cur = cur->next) {
GtkCTreeNode *row = GTK_CTREE_NODE(cur->data);
msginfo = gtk_ctree_node_get_row_data(ctree, row);
- partial_mark_for_delete(msginfo);
+ if (msginfo->total_size != 0 &&
+ msginfo->size != (off_t)msginfo->total_size)
+ partial_mark_for_delete(msginfo);
}
}
GList *cur;
START_LONG_OPERATION(summaryview);
+ folder_item_set_batch(summaryview->folder_item, TRUE);
for (cur = GTK_CLIST(ctree)->selection; cur != NULL && cur->data != NULL; cur = cur->next)
summary_unmark_row(summaryview, GTK_CTREE_NODE(cur->data));
-
+ folder_item_set_batch(summaryview->folder_item, FALSE);
END_LONG_OPERATION(summaryview);
summary_status_show(summaryview);
END_LONG_OPERATION(summaryview);
- summary_step(summaryview, GTK_SCROLL_STEP_FORWARD);
-
- if (prefs_common.immediate_exec)
+ if (prefs_common.immediate_exec) {
+ summary_step(summaryview, GTK_SCROLL_STEP_FORWARD);
summary_execute(summaryview);
- else {
+ } else {
summary_status_show(summaryview);
}
summary_show(summaryview, item);
summary_select_by_msgnum(summaryview, selected_msgnum);
+
summaryview->displayed = summary_find_msg_by_msgnum(summaryview, displayed_msgnum);
if (!summaryview->displayed)
messageview_clear(summaryview->messageview);
g_free(mbox);
}
+
+void summaryview_lock(SummaryView *summaryview, FolderItem *item)
+{
+ if (!summaryview || !summaryview->folder_item || !item) {
+ return;
+ }
+
+ if (summaryview->folder_item->folder == item->folder) {
+ gtk_widget_set_sensitive(summaryview->ctree, FALSE);
+ }
+}
+void summaryview_unlock(SummaryView *summaryview, FolderItem *item)
+{
+ gtk_widget_set_sensitive(summaryview->ctree, TRUE);
+}