diff src/conversation.c @ 1352:2e8213567278

[gaim-migrate @ 1362] Blah Blah Blah :) The cute grey/non grey stuff works better and is less crashy committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Fri, 22 Dec 2000 02:25:28 +0000
parents a0d89bdc733e
children 776bb4c6c0b8
line wrap: on
line diff
--- a/src/conversation.c	Fri Dec 22 02:09:39 2000 +0000
+++ b/src/conversation.c	Fri Dec 22 02:25:28 2000 +0000
@@ -1653,19 +1653,30 @@
 	GtkWidget *parent = c->add->parent;
 	gtk_widget_destroy(c->add);
 
-	if (c->gc && find_buddy(c->gc, c->name)) {
+	if (find_buddy(c->gc, c->name)) {
 		c->add = picture_button2(c->window, _("Remove"), gnome_remove_xpm, dispstyle);
-		if (c->gc->prpl->remove_buddy == NULL)
-			gtk_widget_set_sensitive(c->add, FALSE);
-		else
-			gtk_widget_set_sensitive(c->add, TRUE);
+
+		if (c->gc) 
+		{
+			if (c->gc->prpl->remove_buddy == NULL)
+				gtk_widget_set_sensitive(c->add, FALSE);
+			else
+				gtk_widget_set_sensitive(c->add, TRUE);
+		}
 	} else {
 		c->add = picture_button2(c->window, _("Add"), gnome_add_xpm, dispstyle);
-		if (c->gc->prpl->add_buddy == NULL)
-			gtk_widget_set_sensitive(c->add, FALSE);
-		else
-			gtk_widget_set_sensitive(c->add, TRUE);
+		if (c->gc) 
+		{
+			if (c->gc->prpl->add_buddy == NULL)
+				gtk_widget_set_sensitive(c->add, FALSE);
+			else
+				gtk_widget_set_sensitive(c->add, TRUE);
+		}
 	}
+
+	if (!c->gc)
+		gtk_widget_set_sensitive(c->add, FALSE);
+
 	gtk_signal_connect(GTK_OBJECT(c->add), "clicked", GTK_SIGNAL_FUNC(add_callback), c);
 	gtk_box_pack_end(GTK_BOX(parent), c->add, dispstyle, dispstyle, 0);
 	gtk_box_reorder_child(GTK_BOX(parent), c->add, 2);
@@ -1719,7 +1730,7 @@
 		else
 			C->gc = NULL;
 
-		update_convo_add_button(C);
+		update_buttons_by_protocol(C);
 
 		c = c->next;
 	}
@@ -1727,6 +1738,17 @@
 
 void update_buttons_by_protocol(struct conversation *c)
 {
+	if (!c->gc)
+	{
+		gtk_widget_set_sensitive(c->info, FALSE);
+		gtk_widget_set_sensitive(c->send, FALSE);
+		gtk_widget_set_sensitive(c->warn, FALSE);
+		gtk_widget_set_sensitive(c->block, FALSE);
+		gtk_widget_set_sensitive(c->add, FALSE);
+
+		return;
+	}
+	
 	if (c->gc->prpl->set_info == NULL && c->info)
 		gtk_widget_set_sensitive(c->info, FALSE);
 	else