diff src/buddy.c @ 920:972a180e9429

[gaim-migrate @ 930] yay committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sat, 16 Sep 2000 00:40:24 +0000
parents 8de59874f5ce
children d2e865d64dd8
line wrap: on
line diff
--- a/src/buddy.c	Fri Sep 15 22:41:22 2000 +0000
+++ b/src/buddy.c	Sat Sep 16 00:40:24 2000 +0000
@@ -868,7 +868,7 @@
 
 	b->idletime = gtk_label_new("");
 
-	gtk_tree_append(GTK_TREE(g->tree),b->item);
+/*	gtk_tree_append(GTK_TREE(g->tree),b->item);*/
 	gtk_container_add(GTK_CONTAINER(b->item), box);
 
 	gtk_box_pack_start(GTK_BOX(box), b->pix, FALSE, FALSE, 1);
@@ -886,7 +886,6 @@
 	return b;
 }
 
-
 struct group *add_group(char *group)
 {
 	struct group *g = find_group(group);
@@ -1316,8 +1315,12 @@
 			
 	if (!b->present) {
 		int count = 0;
-		gtk_widget_hide(b->item);
 		g = find_group_by_buddy(name);
+		
+		if (g && g->tree && b->item->parent) {
+			gtk_widget_ref(b->item);
+			gtk_tree_remove_item(GTK_TREE(g->tree), b->item);
+		}
 		mem = g->members;
 		while (mem) {
 			b = (struct buddy *)mem->data;
@@ -1485,9 +1488,28 @@
 			}
 
 			
-			{ struct group *g = find_group_by_buddy(b->name);
-			  gtk_widget_show(g->item); }
-			gtk_widget_show(b->item);
+			{
+				struct group *g = find_group_by_buddy(b->name);
+				gtk_widget_show(g->item);
+				if (!b->item->parent) {
+					GList *mem = g->members; int cn = 0;
+					struct buddy *BB;
+					while (mem) {
+						BB = (struct buddy *)mem->data;
+						if (BB == b)
+							break;
+						if (BB->present) cn++;
+						mem = mem->next;
+					}
+					if (cn)
+						gtk_tree_insert(GTK_TREE(g->tree),
+								b->item, cn);
+					else
+						gtk_tree_prepend(GTK_TREE(g->tree),
+								b->item);
+				}
+				gtk_widget_show(b->item);
+			}
 			gtk_widget_show(b->label);
                         b->log_timer = gtk_timeout_add(10000, (GtkFunction) log_timeout, b->name);
         		if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER )