aboutsummaryrefslogtreecommitdiff
path: root/src/summaryview.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-30 07:15:17 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-30 07:15:17 +0000
commit2b189157e5b62851a467dba130a2167a8962bab7 (patch)
treec338bf5370cee7d52192765732ed467f45d68696 /src/summaryview.c
parenta86fc629f6c05556bfc17c62fc3d4f9b487bb6c5 (diff)
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
Diffstat (limited to 'src/summaryview.c')
-rw-r--r--src/summaryview.c43
1 files changed, 41 insertions, 2 deletions
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)