From 8c859ad82575381a5176c0af24b35ad25beb225d Mon Sep 17 00:00:00 2001 From: mjentsch Date: Sat, 30 May 2015 15:55:13 +0200 Subject: [PATCH] Fix bug that caused dropping of group chat messages when leaving the chat window open during reconnect --- tgp-chat.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tgp-chat.c b/tgp-chat.c index 41c36d9..21842cf 100644 --- a/tgp-chat.c +++ b/tgp-chat.c @@ -41,16 +41,17 @@ void chat_users_update (struct tgl_state *TLS, struct tgl_chat *chat) { PurpleConversation *chat_show (PurpleConnection *gc, int id) { connection_data *conn = purple_connection_get_protocol_data(gc); PurpleConversation *convo = purple_find_chat (gc, id); + PurpleConvChat *chat = purple_conversation_get_chat_data (convo); tgl_peer_t *P = tgl_peer_get (conn->TLS, TGL_MK_CHAT(id)); - if (! convo) { - if (! P) { - warning ("Chat %d not existing, not showing...", id); - return NULL; - } - convo = p2tgl_got_joined_chat (conn->TLS, &P->chat); - chat_users_update (conn->TLS, &P->chat); + if (! P) { + warning ("Chat %d not existing, not showing...", id); + return NULL; } + if (! convo || (chat && purple_conv_chat_has_left (chat))) { + convo = p2tgl_got_joined_chat (conn->TLS, &P->chat); + } + chat_users_update (conn->TLS, &P->chat); return convo; }