# HG changeset patch # User Richard Laager # Date 1142321452 0 # Node ID 65486b7e8e452825bf9629ac7427ad2928ac3917 # Parent 56abb67edec9c9cdb2acd1a57f674b2a4d64daf0 [gaim-migrate @ 15886] SF Patch #1446662 from Sadrul "This patch keeps the selected node selected after the buddy-list is redrawn." committer: Tailor Script diff -r 56abb67edec9 -r 65486b7e8e45 src/gtkblist.c --- a/src/gtkblist.c Tue Mar 14 07:25:54 2006 +0000 +++ b/src/gtkblist.c Tue Mar 14 07:30:52 2006 +0000 @@ -3347,10 +3347,35 @@ static void _prefs_change_redo_list() { + GtkTreeSelection *sel; + GtkTreeIter iter; + GaimBlistNode *node = NULL; + + sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview)); + if (gtk_tree_selection_get_selected(sel, NULL, &iter)) + { + gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1); + } + redo_buddy_list(gaim_get_blist(), TRUE); #if GTK_CHECK_VERSION(2,6,0) gtk_tree_view_columns_autosize(GTK_TREE_VIEW(gtkblist->treeview)); #endif + + if (node) + { + struct _gaim_gtk_blist_node *gtknode; + GtkTreePath *path; + + gtknode = node->ui_data; + if (gtknode && gtknode->row) + { + path = gtk_tree_row_reference_get_path(gtknode->row); + gtk_tree_selection_select_path(sel, path); + gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(gtkblist->treeview), path, NULL, FALSE, 0, 0); + gtk_tree_path_free(path); + } + } } static void _prefs_change_sort_method(const char *pref_name, GaimPrefType type,