aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-05-11 10:39:47 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-05-11 10:39:47 +0000
commitf94dc6a5cf12bcce1980ccb04deca6c9926d1af8 (patch)
treef3b62fb4530cec5ed71db8465cdfb168eae11194 /src
parent33358d1e043a4006791e652374a2b269c4f83c76 (diff)
also expand all children on summary.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@245 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r--src/summaryview.c85
1 files changed, 35 insertions, 50 deletions
diff --git a/src/summaryview.c b/src/summaryview.c
index 55b16c6d..2bfed1f4 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -1633,6 +1633,30 @@ void summary_sort(SummaryView *summaryview,
main_window_cursor_normal(summaryview->mainwin);
}
+static gboolean summary_have_unread_children(SummaryView *summaryview,
+ GtkTreeIter *iter)
+{
+ GtkTreeModel *model = GTK_TREE_MODEL(summaryview->store);
+ GtkTreeIter iter_;
+ MsgInfo *msginfo;
+ gboolean valid;
+
+ gtk_tree_model_get(model, iter, S_COL_MSG_INFO, &msginfo, -1);
+ if (MSG_IS_UNREAD(msginfo->flags))
+ return TRUE;
+
+ valid = gtk_tree_model_iter_children(model, &iter_, iter);
+
+ while (valid) {
+ if (summary_have_unread_children(summaryview, &iter_))
+ return TRUE;
+
+ valid = gtk_tree_model_iter_next(model, &iter_);
+ }
+
+ return FALSE;
+}
+
static void summary_set_row(SummaryView *summaryview, GtkTreeIter *iter,
MsgInfo *msginfo)
{
@@ -2135,47 +2159,6 @@ void summary_toggle_view(SummaryView *summaryview)
main_window_toggle_message_view(summaryview->mainwin);
}
-#if 0
-static gboolean summary_search_unread_recursive(GtkCTree *ctree,
- GtkTreeIter *iter)
-{
- MsgInfo *msginfo;
-
- if (node) {
- msginfo = gtk_ctree_node_get_row_data(ctree, node);
- if (msginfo && MSG_IS_UNREAD(msginfo->flags))
- return TRUE;
- node = GTK_CTREE_ROW(node)->children;
- } else
- node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
-
- while (node) {
- if (summary_search_unread_recursive(ctree, node) == TRUE)
- return TRUE;
- node = GTK_CTREE_ROW(node)->sibling;
- }
-
- return FALSE;
-}
-#endif
-
-static gboolean summary_have_unread_children(SummaryView *summaryview,
- GtkTreeIter *iter)
-{
-#if 0
- if (!node) return FALSE;
-
- node = GTK_CTREE_ROW(node)->children;
-
- while (node) {
- if (summary_search_unread_recursive(ctree, node) == TRUE)
- return TRUE;
- node = GTK_CTREE_ROW(node)->sibling;
- }
-#endif
- return FALSE;
-}
-
void summary_update_selected_rows(SummaryView *summaryview)
{
GList *rows, *cur;
@@ -3086,7 +3069,6 @@ void summary_thread_build(SummaryView *summaryview)
mlist = summary_get_msg_list(summaryview);
root = procmsg_get_thread_tree(mlist);
- g_slist_free(mlist);
node_table = g_hash_table_new(NULL, NULL);
for (node = root->children; node != NULL; node = node->next) {
g_hash_table_insert(node_table, node->data, node);
@@ -3111,7 +3093,9 @@ void summary_thread_build(SummaryView *summaryview)
gtk_tree_store_remove(store, &iter);
}
+ g_hash_table_destroy(node_table);
g_node_destroy(root);
+ g_slist_free(mlist);
if (prefs_common.expand_thread)
gtk_tree_view_expand_all(GTK_TREE_VIEW(summaryview->treeview));
@@ -3783,12 +3767,12 @@ static GtkWidget *summary_tree_view_create(SummaryView *summaryview)
g_signal_connect(G_OBJECT(selection), "changed",
G_CALLBACK(summary_selection_changed), summaryview);
-#if 0
g_signal_connect_after(G_OBJECT(treeview), "row-expanded",
- G_CALLBACK(summary_tree_expanded),
+ G_CALLBACK(summary_row_expanded),
summaryview);
+#if 0
g_signal_connect_after(G_OBJECT(treeview), "row-collapsed",
- G_CALLBACK(summary_tree_collapsed),
+ G_CALLBACK(summary_row_collapsed),
summaryview);
#endif
@@ -4062,15 +4046,16 @@ static void summary_row_activated(GtkTreeView *treeview, GtkTreePath *path,
summaryview->display_msg = FALSE;
}
-#if 0
-static void summary_tree_expanded(GtkTreeView *treeview, GtkTreeIter *iter,
- GtkTreePath *path, SummaryView *summaryview)
+static void summary_row_expanded(GtkTreeView *treeview, GtkTreeIter *iter,
+ GtkTreePath *path, SummaryView *summaryview)
{
+ gtk_tree_view_expand_row(treeview, path, TRUE);
//summary_set_row(summaryview, iter, NULL);
}
-static void summary_tree_collapsed(GtkTreeView *treeview, GtkTreeIter *iter,
- GtkTreePath *path, SummaryView *summaryview)
+#if 0
+static void summary_row_collapsed(GtkTreeView *treeview, GtkTreeIter *iter,
+ GtkTreePath *path, SummaryView *summaryview)
{
//summary_set_row(summaryview, iter, NULL);
}