diff src/protocols/irc/msgs.c @ 9238:f4f210e47b60

[gaim-migrate @ 10036] This is Tim's patch from 908047. I'm committing it now instead of letting him commit it so I can continue to feel relevant. If it breaks, tell Tim. If it doesn't, I'll take the credit. committer: Tailor Script <tailor@pidgin.im>
author Ethan Blanton <elb@pidgin.im>
date Tue, 08 Jun 2004 05:34:51 +0000
parents c55aa23bf56e
children f5c08be60098
line wrap: on
line diff
--- a/src/protocols/irc/msgs.c	Tue Jun 08 02:20:14 2004 +0000
+++ b/src/protocols/irc/msgs.c	Tue Jun 08 05:34:51 2004 +0000
@@ -549,6 +549,7 @@
 	GaimConnection *gc = gaim_account_get_connection(irc->account);
 	GaimConversation *convo;
 	char *nick = irc_mask_nick(from), *userhost;
+	struct irc_buddy *ib;
 	static int id = 1;
 
 	if (!gc) {
@@ -572,6 +573,12 @@
 
 	userhost = irc_mask_userhost(from);
 	gaim_conv_chat_add_user(GAIM_CONV_CHAT(convo), nick, userhost);
+
+	if ((ib = g_hash_table_lookup(irc->buddies, nick)) != NULL) {
+		ib->flag = TRUE;
+		irc_buddy_status(nick, ib, irc);
+	}
+
 	g_free(userhost);
 	g_free(nick);
 }
@@ -846,6 +853,7 @@
 void irc_msg_quit(struct irc_conn *irc, const char *name, const char *from, char **args)
 {
 	GaimConnection *gc = gaim_account_get_connection(irc->account);
+	struct irc_buddy *ib;
 	char *data[2];
 
 	if (!args || !args[0] || !gc)
@@ -855,6 +863,11 @@
 	data[1] = args[0];
 	/* XXX this should have an API, I shouldn't grab this directly */
 	g_slist_foreach(gc->buddy_chats, (GFunc)irc_chat_remove_buddy, data);
+
+	if ((ib = g_hash_table_lookup(irc->buddies, data[0])) != NULL) {
+		ib->flag = FALSE;
+		irc_buddy_status(data[0], ib, irc);
+	}
 	g_free(data[0]);
 
 	return;