src/protocols/jabber/message.c

changeset 7971
a9309feca3c8
parent 7968
900c163f8260
child 7972
f8538961a159
--- a/src/protocols/jabber/message.c	Thu Jan 01 18:20:01 2004 +0000
+++ b/src/protocols/jabber/message.c	Fri Jan 02 06:16:44 2004 +0000
@@ -178,9 +178,19 @@
 	if(!chat)
 		return;
 
-	if(jm->subject)
+	if(jm->subject) {
 		gaim_conv_chat_set_topic(GAIM_CONV_CHAT(chat->conv), jid->resource,
 				jm->subject);
+		if(!jm->xhtml && !jm->body) {
+			char *msg;
+			if(jid->resource)
+				msg = g_strdup_printf(_("%s has set the topic to: %s"), jid->resource, jm->subject);
+			else
+				msg = g_strdup_printf(_("The topic is: %s"), jm->subject);
+			gaim_conv_chat_write(GAIM_CONV_CHAT(chat->conv), "", msg, GAIM_MESSAGE_SYSTEM, jm->sent);
+			g_free(msg);
+		}
+	}
 
 	if(jm->xhtml || jm->body) {
 		if(jid->resource)
@@ -394,7 +404,7 @@
 
 	xmlnode_set_attrib(message, "to", jm->to);
 
-	if(jm->events || (!jm->body && !jm->xhtml)) {
+	if(jm->events || (!jm->body && !jm->xhtml && !jm->subject)) {
 		child = xmlnode_new_child(message, "x");
 		xmlnode_set_attrib(child, "xmlns", "jabber:x:event");
 		if(jm->events & JABBER_MESSAGE_EVENT_COMPOSING)
@@ -485,6 +495,10 @@
 		return 1;
 	} else if(!strcmp(msg, "/register")) {
 		jabber_chat_register(chat);
+		return 1;
+	} else if(!strncmp(msg, "/topic", 6)) {
+		jabber_chat_change_topic(chat, strlen(msg) > 7 ? msg+7 : NULL);
+		return 1;
 	}
 
 	jm = g_new0(JabberMessage, 1);

mercurial