Mercurial > ~mikael > mcabber > hg
diff mcabber/src/jabglue.c @ 470:eaa2ad773192
Add "/room nick"
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 02 Oct 2005 00:37:16 +0200 |
parents | a926523d2392 |
children | 75442262c082 |
line wrap: on
line diff
--- a/mcabber/src/jabglue.c Sat Oct 01 23:17:05 2005 +0200 +++ b/mcabber/src/jabglue.c Sun Oct 02 00:37:16 2005 +0200 @@ -476,7 +476,6 @@ { xmlnode x, y; gchar *roomid, *utf8_nickname; - GSList *roster_usr; if (!online || !room || !nickname) return; @@ -490,11 +489,6 @@ return; } - // We need to save the nickname for future use - roster_usr = roster_add_user(room, NULL, NULL, ROSTER_TYPE_ROOM); - if (roster_usr) - buddy_setnickname(roster_usr->data, nickname); - // Send the XML request x = jutil_presnew(JPACKET__UNKNOWN, 0, 0); xmlnode_put_attrib(x, "from", jid_full(jc->user)); @@ -1104,6 +1098,9 @@ g_free(mbuf); if (newname_noutf8) { buddy_resource_setname(room_elt->data, rname, newname_noutf8); + m = buddy_getnickname(room_elt->data); + if (m && !strcmp(rname, m)) + buddy_setnickname(room_elt->data, newname_noutf8); g_free(newname_noutf8); } } @@ -1116,7 +1113,13 @@ g_free(mbuf); } else if (buddy_getstatus(room_elt->data, rname) == offline && ust != offline) { - gchar *mbuf = g_strdup_printf("%s has joined", rname); + gchar *mbuf; + if (buddy_getnickname(room_elt->data) == NULL) { + buddy_setnickname(room_elt->data, rname); + mbuf = g_strdup_printf("You have joined as \"%s\"", rname); + } else { + mbuf = g_strdup_printf("%s has joined", rname); + } scr_WriteIncomingMessage(r, mbuf, 0, HBB_PREFIX_INFO); g_free(mbuf); }