From bf268a1934dd6f4760652788b2e1f0aaa3d4c5c0 Mon Sep 17 00:00:00 2001 From: hiro Date: Wed, 18 May 2005 06:01:43 +0000 Subject: display next messages after deleting when immediate_exec is enabled. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@265 ee746299-78ed-0310-b773-934348b2243d --- ChangeLog | 5 +++++ ChangeLog.ja | 5 +++++ configure.in | 2 +- src/summaryview.c | 48 ++++++++++++++++++++++++++++-------------------- 4 files changed, 39 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index e04e08c7..1e265fd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-05-18 + + * src/summaryview.c: display next messages after deleting when + immediate_exec is enabled. + 2005-05-17 * version 1.9.11 diff --git a/ChangeLog.ja b/ChangeLog.ja index 7cef5fe1..73de6ede 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,8 @@ +2005-05-18 + + * src/summaryview.c: immediate_exec が有効な場合、削除の後次の + メッセージを表示するようにした。 + 2005-05-17 * version 1.9.11 diff --git a/configure.in b/configure.in index 9aeb982c..d5b81e5a 100644 --- a/configure.in +++ b/configure.in @@ -9,7 +9,7 @@ MINOR_VERSION=9 MICRO_VERSION=11 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION= +EXTRA_VERSION=+svn VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl set $target diff --git a/src/summaryview.c b/src/summaryview.c index e2bb307e..80762a1d 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -128,6 +128,10 @@ static gboolean summary_find_next_msg (SummaryView *summaryview, GtkTreeIter *next, GtkTreeIter *iter); +static gboolean summary_find_nearest_msg(SummaryView *summaryview, + GtkTreeIter *target, + GtkTreeIter *iter); + static gboolean summary_find_prev_flagged_msg (SummaryView *summaryview, GtkTreeIter *prev, @@ -1291,6 +1295,18 @@ static gboolean summary_find_next_msg(SummaryView *summaryview, return FALSE; } +static gboolean summary_find_nearest_msg(SummaryView *summaryview, + GtkTreeIter *target, GtkTreeIter *iter) +{ + gboolean valid; + + valid = summary_find_next_msg(summaryview, target, iter); + if (!valid) + valid = summary_find_prev_msg(summaryview, target, iter); + + return valid; +} + static gboolean summary_find_prev_flagged_msg(SummaryView *summaryview, GtkTreeIter *prev, GtkTreeIter *iter, @@ -2427,7 +2443,6 @@ void summary_delete(SummaryView *summaryview) FolderItem *item = summaryview->folder_item; GList *rows, *cur; GtkTreeIter last_sel, next; - gboolean valid; if (!item || FOLDER_TYPE(item->folder) == F_NEWS) return; @@ -2457,12 +2472,7 @@ void summary_delete(SummaryView *summaryview) if (prefs_common.immediate_exec || item->stype == F_TRASH) { summary_execute(summaryview); } else { - valid = summary_find_next_msg(summaryview, &next, &last_sel); - if (!valid) - valid = summary_find_prev_msg - (summaryview, &next, &last_sel); - - if (valid) { + if (summary_find_nearest_msg(summaryview, &next, &last_sel)) { summary_select_row (summaryview, &next, messageview_is_visible @@ -2874,13 +2884,13 @@ gboolean summary_execute(SummaryView *summaryview) val |= summary_execute_copy(summaryview); val |= summary_execute_delete(summaryview); - statusbar_pop_all(); - STATUSBAR_POP(summaryview->mainwin); - summary_unlock(summaryview); summary_remove_invalid_messages(summaryview); + statusbar_pop_all(); + STATUSBAR_POP(summaryview->mainwin); + if (val != 0) { alertpanel_error(_("Error occurred while processing messages.")); } @@ -2923,10 +2933,7 @@ static void summary_remove_invalid_messages(SummaryView *summaryview) valid = gtkut_tree_row_reference_get_iter(model, summaryview->selected, &iter); if (valid) { - valid = summary_find_next_msg(summaryview, &next, &iter); - if (!valid) - valid = summary_find_prev_msg(summaryview, &next, - &iter); + valid = summary_find_nearest_msg(summaryview, &next, &iter); if (valid) { gtk_tree_model_get(model, &next, S_COL_MSG_INFO, &msginfo, -1); @@ -2939,7 +2946,12 @@ static void summary_remove_invalid_messages(SummaryView *summaryview) gtk_tree_row_reference_new(model, path); gtk_tree_path_free(path); } - summary_select_row(summaryview, &next, FALSE, FALSE); + summary_select_row + (summaryview, &next, + (prefs_common.immediate_exec && + messageview_is_visible + (summaryview->messageview)), + FALSE); } } if (!valid) { @@ -3432,11 +3444,7 @@ static void summary_modify_threads(SummaryView *summaryview) has_selection = gtkut_tree_row_reference_get_iter (model, summaryview->selected, &selected); if (has_selection) { - valid = summary_find_next_msg(summaryview, &next, &selected); - if (!valid) - valid = summary_find_prev_msg(summaryview, &next, - &selected); - if (valid) { + if (summary_find_nearest_msg(summaryview, &next, &selected)) { selected = next; selected_p = &selected; } else -- cgit v1.2.3