diff options
| -rw-r--r-- | irc_im.c | 2 | ||||
| -rw-r--r-- | protocols/jabber/conference.c | 18 | 
2 files changed, 10 insertions, 10 deletions
| @@ -797,9 +797,9 @@ static gboolean bee_irc_channel_chat_topic( irc_channel_t *ic, const char *new )  		char *topic = g_strdup( new );  		c->ic->acc->prpl->chat_topic( c, topic );  		g_free( topic ); -		return TRUE;  	} +	/* Whatever happened, the IM module should ack the topic change. */  	return FALSE;  } diff --git a/protocols/jabber/conference.c b/protocols/jabber/conference.c index e04b9792..0c2db0b3 100644 --- a/protocols/jabber/conference.c +++ b/protocols/jabber/conference.c @@ -311,6 +311,15 @@ void jabber_chat_pkt_message( struct im_connection *ic, struct jabber_buddy *bud  	struct jabber_chat *jc = chat ? chat->data : NULL;  	char *s; +	if( subject && chat ) +	{ +		s = bud ? strchr( bud->ext_jid, '/' ) : NULL; +		if( s ) *s = 0; +		imcb_chat_topic( chat, bud ? bud->ext_jid : NULL, subject->text_len > 0 ? +		                 subject->text : NULL, jabber_get_timestamp( node ) ); +		if( s ) *s = '/'; +	} +	  	if( bud == NULL || ( jc && ~jc->flags & JCFLAG_MESSAGE_SENT && bud == jc->me ) )  	{  		char *nick; @@ -365,15 +374,6 @@ void jabber_chat_pkt_message( struct im_connection *ic, struct jabber_buddy *bud  		   now or just wait for the OS to do it. :-) */  		return;  	} -	 -	if( subject ) -	{ -		s = strchr( bud->ext_jid, '/' ); -		if( s ) *s = 0; -		imcb_chat_topic( chat, bud->ext_jid, subject->text_len > 0 ? -		                 subject->text : NULL, jabber_get_timestamp( node ) ); -		if( s ) *s = '/'; -	}  	if( body && body->text_len > 0 )  	{  		s = strchr( bud->ext_jid, '/' ); | 
