diff finch/gntblist.c @ 16105:1983ecd15174

Remember the collapsed state of groups in the blist
author Richard Nelson <wabz@pidgin.im>
date Sat, 14 Apr 2007 12:39:33 +0000
parents f00f2e283ffb
children b73761ac005e
line wrap: on
line diff
--- a/finch/gntblist.c	Sat Apr 14 12:38:31 2007 +0000
+++ b/finch/gntblist.c	Sat Apr 14 12:39:33 2007 +0000
@@ -446,6 +446,8 @@
 		return;
 	node->ui_data = gnt_tree_add_row_after(GNT_TREE(ggblist->tree), group,
 			gnt_tree_create_row(GNT_TREE(ggblist->tree), get_display_name(node)), NULL, NULL);
+	gnt_tree_set_expanded(GNT_TREE(ggblist->tree), node,
+		!purple_blist_node_get_bool(node, "collapsed"));
 }
 
 static const char *
@@ -2105,6 +2107,12 @@
 }
 
 static void
+group_collapsed(GntWidget *widget, PurpleBlistNode *node, gboolean collapsed, gpointer null)
+{
+	purple_blist_node_set_bool(node, "collapsed", collapsed);
+}
+
+static void
 blist_show(PurpleBuddyList *list)
 {
 	if (ggblist == NULL)
@@ -2171,6 +2179,7 @@
 	g_signal_connect(G_OBJECT(ggblist->tree), "selection_changed", G_CALLBACK(selection_changed), ggblist);
 	g_signal_connect(G_OBJECT(ggblist->tree), "key_pressed", G_CALLBACK(key_pressed), ggblist);
 	g_signal_connect(G_OBJECT(ggblist->tree), "context-menu", G_CALLBACK(context_menu), ggblist);
+	g_signal_connect(G_OBJECT(ggblist->tree), "collapse-toggled", G_CALLBACK(group_collapsed), NULL);
 	g_signal_connect_after(G_OBJECT(ggblist->tree), "clicked", G_CALLBACK(blist_clicked), ggblist);
 	g_signal_connect(G_OBJECT(ggblist->tree), "activate", G_CALLBACK(selection_activate), ggblist);
 	g_signal_connect_data(G_OBJECT(ggblist->tree), "gained-focus", G_CALLBACK(draw_tooltip),