diff options
Diffstat (limited to 'src/window_list.c')
-rw-r--r-- | src/window_list.c | 24 |
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) { |