diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2009-11-02 09:16:36 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2009-11-02 09:16:36 +0000 |
commit | e667a6f3d8c6514878e184b1c8541cb5f31083d8 (patch) | |
tree | f2d98609958b01bb9aae593e0419fcd43f00351e /src | |
parent | a306a2ef22991d5d12acc08288a63abb94dedbb0 (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')
-rw-r--r-- | src/summaryview.c | 59 |
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); |