aboutsummaryrefslogtreecommitdiff
path: root/src/summaryview.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-11-02 09:16:36 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2009-11-02 09:16:36 +0000
commite667a6f3d8c6514878e184b1c8541cb5f31083d8 (patch)
treef2d98609958b01bb9aae593e0419fcd43f00351e /src/summaryview.c
parenta306a2ef22991d5d12acc08288a63abb94dedbb0 (diff)
don't allow parallel multiple command on IMAP.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2326 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/summaryview.c')
-rw-r--r--src/summaryview.c59
1 files changed, 55 insertions, 4 deletions
diff --git a/src/summaryview.c b/src/summaryview.c
index af2451c8..ec289f33 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -2867,6 +2867,10 @@ void summary_mark(SummaryView *summaryview)
FolderSortKey sort_key = SORT_BY_NONE;
FolderSortType sort_type = SORT_ASCENDING;
+ if (FOLDER_TYPE(summaryview->folder_item->folder) == F_IMAP &&
+ summary_is_locked(summaryview))
+ return;
+
SORT_BLOCK(SORT_BY_MARK);
rows = summary_get_selected_rows(summaryview);
@@ -2937,6 +2941,10 @@ void summary_mark_as_read(SummaryView *summaryview)
FolderSortKey sort_key = SORT_BY_NONE;
FolderSortType sort_type = SORT_ASCENDING;
+ if (FOLDER_TYPE(summaryview->folder_item->folder) == F_IMAP &&
+ summary_is_locked(summaryview))
+ return;
+
SORT_BLOCK(SORT_BY_UNREAD);
rows = summary_get_selected_rows(summaryview);
@@ -2988,6 +2996,10 @@ void summary_mark_thread_as_read(SummaryView *summaryview)
FolderSortKey sort_key = SORT_BY_NONE;
FolderSortType sort_type = SORT_ASCENDING;
+ if (FOLDER_TYPE(summaryview->folder_item->folder) == F_IMAP &&
+ summary_is_locked(summaryview))
+ return;
+
SORT_BLOCK(SORT_BY_UNREAD);
rows = summary_get_selected_rows(summaryview);
@@ -3063,6 +3075,10 @@ void summary_mark_all_read(SummaryView *summaryview)
FolderSortKey sort_key = SORT_BY_NONE;
FolderSortType sort_type = SORT_ASCENDING;
+ if (FOLDER_TYPE(summaryview->folder_item->folder) == F_IMAP &&
+ summary_is_locked(summaryview))
+ return;
+
SORT_BLOCK(SORT_BY_UNREAD);
if (FOLDER_TYPE(summaryview->folder_item->folder) == F_IMAP) {
@@ -3140,6 +3156,10 @@ void summary_mark_as_unread(SummaryView *summaryview)
FolderSortKey sort_key = SORT_BY_NONE;
FolderSortType sort_type = SORT_ASCENDING;
+ if (FOLDER_TYPE(summaryview->folder_item->folder) == F_IMAP &&
+ summary_is_locked(summaryview))
+ return;
+
SORT_BLOCK(SORT_BY_UNREAD);
rows = summary_get_selected_rows(summaryview);
@@ -3286,6 +3306,8 @@ void summary_delete_duplicated(SummaryView *summaryview)
FOLDER_TYPE(summaryview->folder_item->folder) == F_NEWS) return;
if (summaryview->folder_item->stype == F_TRASH) return;
+ if (summary_is_locked(summaryview)) return;
+
main_window_cursor_wait(summaryview->mainwin);
debug_print("Deleting duplicated messages...");
STATUSBAR_PUSH(summaryview->mainwin,
@@ -3339,6 +3361,10 @@ void summary_unmark(SummaryView *summaryview)
FolderSortKey sort_key = SORT_BY_NONE;
FolderSortType sort_type = SORT_ASCENDING;
+ if (FOLDER_TYPE(summaryview->folder_item->folder) == F_IMAP &&
+ summary_is_locked(summaryview))
+ return;
+
SORT_BLOCK(SORT_BY_MARK);
rows = summary_get_selected_rows(summaryview);
@@ -4568,6 +4594,7 @@ static void summary_filter_real(SummaryView *summaryview,
if (!summaryview->folder_item) return;
+ if (summary_is_locked(summaryview)) return;
summary_lock(summaryview);
STATUSBAR_POP(summaryview->mainwin);
@@ -5426,6 +5453,12 @@ static gboolean summary_button_pressed(GtkWidget *treeview,
GET_MSG_INFO(msginfo, &iter);
if (column == summaryview->columns[S_COL_MARK]) {
+ if (MSG_IS_IMAP(msginfo->flags) &&
+ summary_is_locked(summaryview)) {
+ gtk_tree_path_free(path);
+ return TRUE;
+ }
+
SORT_BLOCK(SORT_BY_MARK);
if (!MSG_IS_DELETED(msginfo->flags) &&
@@ -5433,14 +5466,20 @@ static gboolean summary_button_pressed(GtkWidget *treeview,
!MSG_IS_COPY(msginfo->flags)) {
if (MSG_IS_MARKED(msginfo->flags)) {
summary_unmark_row(summaryview, &iter);
- if (MSG_IS_IMAP(msginfo->flags))
+ if (MSG_IS_IMAP(msginfo->flags)) {
+ summary_lock(summaryview);
imap_msg_unset_perm_flags
(msginfo, MSG_MARKED);
+ summary_unlock(summaryview);
+ }
} else {
summary_mark_row(summaryview, &iter);
- if (MSG_IS_IMAP(msginfo->flags))
+ if (MSG_IS_IMAP(msginfo->flags)) {
+ summary_lock(summaryview);
imap_msg_set_perm_flags
(msginfo, MSG_MARKED);
+ summary_unlock(summaryview);
+ }
}
}
gtk_tree_path_free(path);
@@ -5449,22 +5488,34 @@ static gboolean summary_button_pressed(GtkWidget *treeview,
return TRUE;
} else if (column == summaryview->columns[S_COL_UNREAD]) {
+ if (MSG_IS_IMAP(msginfo->flags) &&
+ summary_is_locked(summaryview)) {
+ gtk_tree_path_free(path);
+ return TRUE;
+ }
+
SORT_BLOCK(SORT_BY_UNREAD);
if (MSG_IS_UNREAD(msginfo->flags)) {
summary_mark_row_as_read(summaryview, &iter);
- if (MSG_IS_IMAP(msginfo->flags))
+ if (MSG_IS_IMAP(msginfo->flags)) {
+ summary_lock(summaryview);
imap_msg_unset_perm_flags
(msginfo, MSG_NEW | MSG_UNREAD);
+ summary_unlock(summaryview);
+ }
trayicon_set_tooltip(NULL);
trayicon_set_notify(FALSE);
summary_status_show(summaryview);
} else if (!MSG_IS_REPLIED(msginfo->flags) &&
!MSG_IS_FORWARDED(msginfo->flags)) {
summary_mark_row_as_unread(summaryview, &iter);
- if (MSG_IS_IMAP(msginfo->flags))
+ if (MSG_IS_IMAP(msginfo->flags)) {
+ summary_lock(summaryview);
imap_msg_set_perm_flags
(msginfo, MSG_UNREAD);
+ summary_unlock(summaryview);
+ }
summary_status_show(summaryview);
}
gtk_tree_path_free(path);