aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-18 06:44:17 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2006-01-18 06:44:17 +0000
commit20b96054f479e2190a856c6a851b3969a6aa4a25 (patch)
treecf08eecd8bf22958305cfec8b5ca769aa6a447e3 /src
parenta8ae07a985d677f74bc039b2274487449a5d7873 (diff)
summaryview.c: update all_mlist on sorting to save the order.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@904 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r--src/summaryview.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/summaryview.c b/src/summaryview.c
index ebb0cfc8..7c3da9a4 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -129,6 +129,8 @@ static GdkPixbuf *clip_pixbuf;
static GList *summary_get_selected_rows (SummaryView *summaryview);
static void summary_selection_list_free (SummaryView *summaryview);
+static void summary_update_msg_list (SummaryView *summaryview);
+
static void summary_msgid_table_create (SummaryView *summaryview);
static void summary_msgid_table_destroy (SummaryView *summaryview);
@@ -977,6 +979,32 @@ GSList *summary_get_msg_list(SummaryView *summaryview)
return g_slist_copy(summaryview->all_mlist);
}
+static void summary_update_msg_list(SummaryView *summaryview)
+{
+ GtkTreeModel *model = GTK_TREE_MODEL(summaryview->store);
+ GtkTreeIter iter;
+ GSList *mlist = NULL;
+ MsgInfo *msginfo;
+ gboolean valid;
+
+ if (summaryview->on_filter)
+ return;
+
+ g_slist_free(summaryview->all_mlist);
+ summaryview->all_mlist = NULL;
+
+ valid = gtk_tree_model_get_iter_first(model, &iter);
+
+ while (valid) {
+ gtk_tree_model_get(model, &iter, S_COL_MSG_INFO, &msginfo, -1);
+ mlist = g_slist_prepend(mlist, msginfo);
+ valid = gtkut_tree_model_next(model, &iter);
+ }
+
+ summaryview->all_mlist = g_slist_reverse(mlist);
+
+}
+
static gboolean summary_msgid_table_create_func(GtkTreeModel *model,
GtkTreePath *path,
GtkTreeIter *iter,
@@ -1690,6 +1718,7 @@ void summary_attract_by_subject(SummaryView *summaryview)
summaryview->folder_item->cache_dirty = TRUE;
summary_selection_list_free(summaryview);
+ summary_update_msg_list(summaryview);
summary_scroll_to_selected(summaryview, TRUE);
@@ -1863,6 +1892,9 @@ void summary_sort(SummaryView *summaryview,
(GtkSortType)sort_type);
summary_selection_list_free(summaryview);
+ if (summaryview->all_mlist)
+ summary_update_msg_list(summaryview);
+
summary_set_menu_sensitive(summaryview);
summary_scroll_to_selected(summaryview, TRUE);