diff options
| -rw-r--r-- | protocols/purple/purple.c | 16 | 
1 files changed, 12 insertions, 4 deletions
| diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c index 5ab665fd..10864e9e 100644 --- a/protocols/purple/purple.c +++ b/protocols/purple/purple.c @@ -717,7 +717,7 @@ struct groupchat *purple_chat_join(struct im_connection *ic, const char *room, c  	serv_join_chat(purple_account_get_connection(pd->account), chat_hash); -	return NULL; +	return imcb_chat_new(ic, room);  }  void purple_transfer_request(struct im_connection *ic, file_transfer_t *ft, char *handle); @@ -901,9 +901,17 @@ void prplcb_conv_new(PurpleConversation *conv)  		struct im_connection *ic = purple_ic_by_pa(conv->account);  		struct groupchat *gc; -		gc = imcb_chat_new(ic, conv->name); -		if (conv->title != NULL) { -			imcb_chat_name_hint(gc, conv->title); +		gc = bee_chat_by_title(ic->bee, ic, conv->name); + +		if (!gc) { +			gc = imcb_chat_new(ic, conv->name); +			if (conv->title != NULL) { +				imcb_chat_name_hint(gc, conv->title); +			} +		} + +		/* don't set the topic if it's just the name */ +		if (conv->title != NULL && strcmp(conv->name, conv->title) != 0) {  			imcb_chat_topic(gc, NULL, conv->title, 0);  		} | 
