diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-05-10 09:28:59 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-05-10 09:28:59 +0000 |
commit | d0b069da3ae33f183352e89c5019d3bf509dd68b (patch) | |
tree | 96883ff36f1f20c9850b98cd3bbe69f977b1bcb8 /src | |
parent | 069b663e8beb0733bfb98edf5c57ec8f8766a02f (diff) |
implemented summary_select_thread().
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@242 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r-- | src/summaryview.c | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/src/summaryview.c b/src/summaryview.c index 8def1374..0d8b769d 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -2716,20 +2716,41 @@ void summary_unselect_all(SummaryView *summaryview) void summary_select_thread(SummaryView *summaryview) { -#if 0 - while (GTK_CTREE_ROW(node)->parent != NULL) - node = GTK_CTREE_ROW(node)->parent; + GtkTreeModel *model = GTK_TREE_MODEL(summaryview->store); + GtkTreeIter iter, parent, child, next; + GtkTreePath *start_path, *end_path; + gboolean valid; - if (node != summaryview->selected) - summary_select_row - (summaryview, iter, - messageview_is_visible(summaryview->messageview), - FALSE); + valid = gtkut_tree_row_reference_get_iter(model, summaryview->selected, + &iter); + if (!valid) + return; - gtk_ctree_select_recursive(ctree, node); + while (gtk_tree_model_iter_parent(model, &parent, &iter)) + iter = parent; - summary_status_show(summaryview); -#endif + if (!gtk_tree_model_iter_children(model, &child, &iter)) + return; + + start_path = gtk_tree_model_get_path(model, &iter); + + for (;;) { + next = iter = child; + while (gtk_tree_model_iter_next(model, &next)) + iter = next; + if (!gtk_tree_model_iter_children(model, &child, &iter)) + break; + } + + end_path = gtk_tree_model_get_path(model, &iter); + + gtk_tree_view_expand_row(GTK_TREE_VIEW(summaryview->treeview), + start_path, TRUE); + gtk_tree_selection_select_range(summaryview->selection, + start_path, end_path); + + gtk_tree_path_free(end_path); + gtk_tree_path_free(start_path); } void summary_save_as(SummaryView *summaryview) |