aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--ChangeLog5
-rw-r--r--ChangeLog.ja5
-rw-r--r--src/summaryview.c43
-rw-r--r--src/summaryview.h1
4 files changed, 52 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 63c06143..0bb0712e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2006-01-30
+ * src/summaryview.c: enabled the move/copy of the whole message in
+ collapsed threads.
+
+2006-01-30
+
* libsylph/account.[ch]
src/compose.c: compose_reply(): fixed a bug that automatic account
selection was disabled on IMAP4 folders.
diff --git a/ChangeLog.ja b/ChangeLog.ja
index bebf3766..d814140f 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,10 @@
2006-01-30
+ * src/summaryview.c: 閉じたスレッド全体のメッセージを移動/コピーできる
+ ようにした。
+
+2006-01-30
+
* libsylph/account.[ch]
src/compose.c: compose_reply(): 自動アカウント選択が IMAP4 フォルダ
で無効になっていたバグを修正。
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 */