gaim/gaim

355a8b480923
Parents 6784c4eb8e66
Children da8209eb42e7
plug that leak again, and fix why we couldn't plug it before.
--- a/src/gtkblist.c Thu Jan 13 14:37:15 2005 -0500
+++ b/src/gtkblist.c Thu Jan 13 14:47:10 2005 -0500
@@ -3532,9 +3532,10 @@
* valgrind found several reasons why it's good. If this causes problems
* comment it out again. Stu */
/* Of course it still causes problems - this breaks dragging buddies into
- * contacts, the dragged buddy mysteriously 'disappears'. Stu.
+ * contacts, the dragged buddy mysteriously 'disappears'. Stu. */
+ /* I think it's fixed now. Stu. */
g_free(node->ui_data);
- node->ui_data = NULL; */
+ node->ui_data = NULL;
}
static gboolean do_selection_changed(GaimBlistNode *new_selection)
@@ -3574,7 +3575,7 @@
struct _gaim_gtk_blist_node *gtknode = node->ui_data;
GtkTreePath *newpath;
- if(!gtknode || !iter)
+ if(!iter)
return FALSE;
if(node->parent && !get_iter_from_node(node->parent, &parent_iter))
@@ -3589,7 +3590,17 @@
*iter = sort_method_none(node, list, parent_iter, curptr);
}
- gtk_tree_row_reference_free(gtknode->row);
+ if(gtknode != NULL) {
+ gtk_tree_row_reference_free(gtknode->row);
+ } else {
+ gaim_gtk_blist_new_node(node);
+ gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
+ /* If the node is a contact, and gtknode was NULL, it's because it was dragged.
+ * It *must* have been expanded in order for it to be dragged. */
+ if(GAIM_BLIST_NODE_IS_CONTACT(node))
+ gtknode->contact_expanded = TRUE;
+ }
+
newpath = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel),
iter);
gtknode->row =
@@ -3738,7 +3749,6 @@
/* First things first, update the group */
gaim_gtk_blist_update_group(list, node->parent);
- gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
contact = (GaimContact*)node;
buddy = gaim_contact_get_priority_buddy(contact);
@@ -3751,6 +3761,8 @@
if(!insert_node(list, node, &iter))
return;
+ gtknode = (struct _gaim_gtk_blist_node *)node->ui_data;
+
if(gtknode->contact_expanded) {
GdkPixbuf *status;
char *mark;