about summary refs log tree commit diff stats
path: root/src/window_list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/window_list.c')
-rw-r--r--src/window_list.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/window_list.c b/src/window_list.c
index 2acfd0fb..e4ef8a64 100644
--- a/src/window_list.c
+++ b/src/window_list.c
@@ -197,6 +197,30 @@ wins_get_private_chats(const char *const roomjid)
     return result;
 }
 
+void
+wins_private_nick_change(const char *const roomjid, const char *const oldnick, const char *const newnick)
+{
+    Jid *oldjid = jid_create_from_bare_and_resource(roomjid, oldnick);
+
+    ProfPrivateWin *privwin = wins_get_private(oldjid->fulljid);
+    if (privwin) {
+        free(privwin->fulljid);
+
+        Jid *newjid = jid_create_from_bare_and_resource(roomjid, newnick);
+        privwin->fulljid = strdup(newjid->fulljid);
+        win_vprint((ProfWin*)privwin, '!', 0, NULL, 0, THEME_THEM, NULL, "** %s is now known as %s.", oldjid->resourcepart, newjid->resourcepart);
+
+        autocomplete_remove(wins_ac, oldjid->fulljid);
+        autocomplete_remove(wins_close_ac, oldjid->fulljid);
+        autocomplete_add(wins_ac, newjid->fulljid);
+        autocomplete_add(wins_close_ac, newjid->fulljid);
+
+        jid_destroy(newjid);
+    }
+
+    jid_destroy(oldjid);
+}
+
 ProfWin*
 wins_get_current(void)
 {