From 2b189157e5b62851a467dba130a2167a8962bab7 Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 30 Jan 2006 07:15:17 +0000 Subject: enabled the move/copy of the whole message in collapsed threads. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@943 ee746299-78ed-0310-b773-934348b2243d --- ChangeLog | 5 +++++ ChangeLog.ja | 5 +++++ src/summaryview.c | 43 +++++++++++++++++++++++++++++++++++++++++-- src/summaryview.h | 1 + 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 63c06143..0bb0712e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-01-30 + + * src/summaryview.c: enabled the move/copy of the whole message in + collapsed threads. + 2006-01-30 * libsylph/account.[ch] diff --git a/ChangeLog.ja b/ChangeLog.ja index bebf3766..d814140f 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,3 +1,8 @@ +2006-01-30 + + * src/summaryview.c: 閉じたスレッド全体のメッセージを移動/コピーできる + ようにした。 + 2006-01-30 * libsylph/account.[ch] diff --git a/src/summaryview.c b/src/summaryview.c index b46f3a00..1e70bed9 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -870,6 +870,7 @@ void summary_clear_list(SummaryView *summaryview) summary_msgid_table_destroy(summaryview); summaryview->tmp_mlist = NULL; + summaryview->to_folder = NULL; if (summaryview->folder_table) { g_hash_table_destroy(summaryview->folder_table); summaryview->folder_table = NULL; @@ -3050,9 +3051,20 @@ static void summary_move_row_to(SummaryView *summaryview, GtkTreeIter *iter, msginfo->msgnum, to_folder->path); } +static gboolean summary_move_foreach_func(GtkTreeModel *model, + GtkTreePath *path, GtkTreeIter *iter, + gpointer data) +{ + SummaryView *summaryview = (SummaryView *)data; + + summary_move_row_to(summaryview, iter, summaryview->to_folder); + return FALSE; +} + void summary_move_selected_to(SummaryView *summaryview, FolderItem *to_folder) { GList *rows, *cur; + GtkTreeView *treeview = GTK_TREE_VIEW(summaryview->treeview); GtkTreeModel *model = GTK_TREE_MODEL(summaryview->store); GtkTreeIter iter; @@ -3072,7 +3084,15 @@ void summary_move_selected_to(SummaryView *summaryview, FolderItem *to_folder) GtkTreePath *path = (GtkTreePath *)cur->data; gtk_tree_model_get_iter(model, &iter, path); - summary_move_row_to(summaryview, &iter, to_folder); + if (gtk_tree_model_iter_has_child(model, &iter) && + !gtk_tree_view_row_expanded(treeview, path)) { + summaryview->to_folder = to_folder; + gtkut_tree_model_foreach + (model, &iter, summary_move_foreach_func, + summaryview); + summaryview->to_folder = NULL; + } else + summary_move_row_to(summaryview, &iter, to_folder); } if (prefs_common.immediate_exec) @@ -3123,9 +3143,20 @@ static void summary_copy_row_to(SummaryView *summaryview, GtkTreeIter *iter, msginfo->msgnum, to_folder->path); } +static gboolean summary_copy_foreach_func(GtkTreeModel *model, + GtkTreePath *path, GtkTreeIter *iter, + gpointer data) +{ + SummaryView *summaryview = (SummaryView *)data; + + summary_copy_row_to(summaryview, iter, summaryview->to_folder); + return FALSE; +} + void summary_copy_selected_to(SummaryView *summaryview, FolderItem *to_folder) { GList *rows, *cur; + GtkTreeView *treeview = GTK_TREE_VIEW(summaryview->treeview); GtkTreeModel *model = GTK_TREE_MODEL(summaryview->store); GtkTreeIter iter; @@ -3145,7 +3176,15 @@ void summary_copy_selected_to(SummaryView *summaryview, FolderItem *to_folder) GtkTreePath *path = (GtkTreePath *)cur->data; gtk_tree_model_get_iter(model, &iter, path); - summary_copy_row_to(summaryview, &iter, to_folder); + if (gtk_tree_model_iter_has_child(model, &iter) && + !gtk_tree_view_row_expanded(treeview, path)) { + summaryview->to_folder = to_folder; + gtkut_tree_model_foreach + (model, &iter, summary_copy_foreach_func, + summaryview); + summaryview->to_folder = NULL; + } else + summary_copy_row_to(summaryview, &iter, to_folder); } if (prefs_common.immediate_exec) diff --git a/src/summaryview.h b/src/summaryview.h index be58150d..58c35071 100644 --- a/src/summaryview.h +++ b/src/summaryview.h @@ -141,6 +141,7 @@ private: /* list for moving/deleting messages */ GSList *tmp_mlist; + FolderItem *to_folder; /* table for updating folder tree */ GHashTable *folder_table; /* counter for filtering */ -- cgit v1.2.3