Mercurial > pidgin
diff src/buddy.c @ 5142:94f11800cac5
[gaim-migrate @ 5506]
gave groups the same neat setting stuff that buddies have, and put it to use
by having groups remember if they're collapsed.
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Wed, 16 Apr 2003 21:49:02 +0000 |
parents | 102135caa225 |
children | eb0de4f49d15 |
line wrap: on
line diff
--- a/src/buddy.c Wed Apr 16 17:33:25 2003 +0000 +++ b/src/buddy.c Wed Apr 16 21:49:02 2003 +0000 @@ -215,6 +215,34 @@ gtk_menu_popup(GTK_MENU(awaymenu), NULL, NULL, NULL, NULL, 1, GDK_CURRENT_TIME); } +static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) { + GaimBlistNode *node; + GValue val = {0,}; + + gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val); + + node = g_value_get_pointer(&val); + + if (GAIM_BLIST_NODE_IS_GROUP(node)) { + gaim_group_set_setting((struct group *)node, "collapsed", NULL); + gaim_blist_save(); + } +} + +static void gtk_blist_row_collapsed_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) { + GaimBlistNode *node; + GValue val = {0,}; + + gtk_tree_model_get_value(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &val); + + node = g_value_get_pointer(&val); + + if (GAIM_BLIST_NODE_IS_GROUP(node)) { + gaim_group_set_setting((struct group *)node, "collapsed", "true"); + gaim_blist_save(); + } +} + static void gtk_blist_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) { GaimBlistNode *node; GtkTreeIter iter; @@ -1232,6 +1260,8 @@ gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->buddy_icon_column); g_signal_connect(G_OBJECT(gtkblist->treeview), "row-activated", G_CALLBACK(gtk_blist_row_activated_cb), NULL); + g_signal_connect(G_OBJECT(gtkblist->treeview), "row-expanded", G_CALLBACK(gtk_blist_row_expanded_cb), NULL); + g_signal_connect(G_OBJECT(gtkblist->treeview), "row-collapsed", G_CALLBACK(gtk_blist_row_collapsed_cb), NULL); g_signal_connect(G_OBJECT(gtkblist->treeview), "button-press-event", G_CALLBACK(gtk_blist_button_press_cb), NULL); gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0); @@ -1483,6 +1513,7 @@ GtkTreeIter groupiter; GaimBlistNode *oldersibling; GtkTreeIter oldersiblingiter; + char *collapsed = gaim_group_get_setting((struct group *)node->parent, "collapsed"); if(node->parent && !get_iter_from_node(node->parent, &groupiter)) { @@ -1490,8 +1521,10 @@ * We do that here */ make_a_group(node->parent, &groupiter); } - if(!gtk_tree_model_iter_has_child(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter)) + if(!collapsed) expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter); + else + g_free(collapsed); oldersibling = node->prev; while (oldersibling && !get_iter_from_node(oldersibling, &oldersiblingiter)) {