diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-07-15 06:25:17 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-07-15 06:25:17 +0000 |
commit | ec370ab724dc9d6dc11550c29323d039dc8fe2e0 (patch) | |
tree | 2967942c1117df457797a63a8e2bc57c397fab0b /src | |
parent | efd58f003e08eb948ad552aa5e4868c6fb66f5ad (diff) |
select correct row after execution on summary when sorting is enabled.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@434 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r-- | src/summaryview.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/summaryview.c b/src/summaryview.c index 23c6e0ad..e0661ea3 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -3556,8 +3556,9 @@ static void summary_modify_node(SummaryView *summaryview, GtkTreeIter *iter, static void summary_modify_threads(SummaryView *summaryview) { GtkTreeModel *model = GTK_TREE_MODEL(summaryview->store); - GtkTreeIter iter, next, selected; + GtkTreeIter iter, next, selected, new_selected; GtkTreeIter *selected_p = NULL; + GtkTreePath *prev_path = NULL; gboolean valid, has_selection; summary_lock(summaryview); @@ -3570,6 +3571,8 @@ static void summary_modify_threads(SummaryView *summaryview) has_selection = gtkut_tree_row_reference_get_iter (model, summaryview->selected, &selected); if (has_selection) { + prev_path = gtk_tree_row_reference_get_path + (summaryview->selected); if (summary_find_nearest_msg(summaryview, &next, &selected)) { selected = next; selected_p = &selected; @@ -3593,8 +3596,13 @@ static void summary_modify_threads(SummaryView *summaryview) summary_selection_list_free(summaryview); if (has_selection && - !gtk_tree_row_reference_valid(summaryview->selected)) + !gtk_tree_row_reference_valid(summaryview->selected)) { + if (prev_path && + gtk_tree_model_get_iter(model, &new_selected, prev_path)) + selected = new_selected; summary_select_row(summaryview, &selected, FALSE, FALSE); + } + gtk_tree_path_free(prev_path); debug_print("done.\n"); |