From 77e819e81acd82df21ddee5e1f7eb7bdff909ff5 Mon Sep 17 00:00:00 2001 From: James Booth Date: Wed, 3 Feb 2016 00:11:38 +0000 Subject: Handle self leaving room in private wins --- src/ui/core.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'src/ui/core.c') diff --git a/src/ui/core.c b/src/ui/core.c index 78a992d9..735dc03a 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -821,6 +821,15 @@ ui_room_join(const char *const roomjid, gboolean focus) char *nick = muc_nick(roomjid); win_vprint(console, '!', 0, NULL, 0, THEME_TYPING, "", "-> Autojoined %s as %s (%d).", roomjid, nick, num); } + + GList *privwins = wins_get_private_chats(roomjid); + GList *curr = privwins; + while (curr) { + ProfPrivateWin *privwin = curr->data; + privwin_room_joined(privwin); + curr = g_list_next(curr); + } + g_list_free(privwins); } void @@ -841,6 +850,15 @@ ui_room_destroy(const char *const roomjid) ui_close_win(num); cons_show("Room destroyed: %s", roomjid); } + + GList *privwins = wins_get_private_chats(roomjid); + GList *curr = privwins; + while (curr) { + ProfPrivateWin *privwin = curr->data; + privwin_room_destroyed(privwin); + curr = g_list_next(curr); + } + g_list_free(privwins); } void @@ -851,6 +869,16 @@ ui_leave_room(const char *const roomjid) int num = wins_get_num(window); ui_close_win(num); } + + GList *privwins = wins_get_private_chats(roomjid); + GList *curr = privwins; + while (curr) { + ProfPrivateWin *privwin = curr->data; + privwin_room_left(privwin); + curr = g_list_next(curr); + } + g_list_free(privwins); + } void @@ -879,6 +907,15 @@ ui_room_destroyed(const char *const roomjid, const char *const reason, const cha } } } + + GList *privwins = wins_get_private_chats(roomjid); + GList *curr = privwins; + while (curr) { + ProfPrivateWin *privwin = curr->data; + privwin_room_destroyed(privwin); + curr = g_list_next(curr); + } + g_list_free(privwins); } void @@ -906,6 +943,15 @@ ui_room_kicked(const char *const roomjid, const char *const actor, const char *c win_vprint(console, '!', 0, NULL, 0, THEME_TYPING, "", "<- %s", message->str); g_string_free(message, TRUE); } + + GList *privwins = wins_get_private_chats(roomjid); + GList *curr = privwins; + while (curr) { + ProfPrivateWin *privwin = curr->data; + privwin_room_kicked(privwin, actor, reason); + curr = g_list_next(curr); + } + g_list_free(privwins); } void @@ -933,6 +979,15 @@ ui_room_banned(const char *const roomjid, const char *const actor, const char *c win_vprint(console, '!', 0, NULL, 0, THEME_TYPING, "", "<- %s", message->str); g_string_free(message, TRUE); } + + GList *privwins = wins_get_private_chats(roomjid); + GList *curr = privwins; + while (curr) { + ProfPrivateWin *privwin = curr->data; + privwin_room_banned(privwin, actor, reason); + curr = g_list_next(curr); + } + g_list_free(privwins); } int -- cgit 1.4.1-2-gfad0