src/buddy.c

changeset 4770
be590660a9c2
parent 4767
c212c2738d77
child 4773
1cc75c5e16b0
--- a/src/buddy.c	Fri Mar 14 08:27:13 2003 +0000
+++ b/src/buddy.c	Fri Mar 14 11:38:21 2003 +0000
@@ -345,6 +345,21 @@
 		memcpy(&b, sd->data, sizeof(b));
 		if(gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget), x, y, &path, &position)) {
 			/* if we're here, I think it means the drop is ok */
+			GtkTreeIter iter;
+			GaimBlistNode *node;
+			GValue val = {0};
+			gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
+			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_BUDDY(node)) {
+				if (position == GTK_TREE_VIEW_DROP_AFTER) {
+					gaim_blist_add_buddy(b, node->parent, node);
+				} else if (position == GTK_TREE_VIEW_DROP_BEFORE) {
+					gaim_blist_add_buddy(b, node->parent, node->prev);
+				}
+			} else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
+				gaim_blist_add_buddy(b, node, NULL);
+			}	
 			gtk_tree_path_free(path);
 		}
 	}
@@ -1214,6 +1229,8 @@
 
 static void gaim_gtk_blist_destroy(struct gaim_buddy_list *list)
 {
+	if (!gtkblist)
+		return;
 	gtk_widget_destroy(gtkblist->window);
 
 	gtkblist->window = gtkblist->vbox = gtkblist->treeview = NULL;

mercurial