diff options
| author | 0xd34df00d <0xd34df00d@gmail.com> | 2013-03-12 12:01:24 +0400 |
|---|---|---|
| committer | 0xd34df00d <0xd34df00d@gmail.com> | 2013-03-12 12:01:24 +0400 |
| commit | 3271cb0f62bb674a0ff1987ec08c49498edece62 (patch) | |
| tree | 8ced4ffdf530deca157283856995091c67e56628 /src/client/QXmppMucManager.cpp | |
| parent | 32c088eea838d81fb7c0c51ba4fd675efbdec327 (diff) | |
| download | qxmpp-3271cb0f62bb674a0ff1987ec08c49498edece62.tar.gz | |
Update self nick only if the nick change is successful.
Diffstat (limited to 'src/client/QXmppMucManager.cpp')
| -rw-r--r-- | src/client/QXmppMucManager.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/client/QXmppMucManager.cpp b/src/client/QXmppMucManager.cpp index 99de3f3a..1957b7e6 100644 --- a/src/client/QXmppMucManager.cpp +++ b/src/client/QXmppMucManager.cpp @@ -381,17 +381,17 @@ void QXmppMucRoom::setNickName(const QString &nickName) if (nickName == d->nickName) return; - const bool wasJoined = isJoined(); - d->nickName = nickName; - emit nickNameChanged(nickName); - // if we had already joined the room, request nickname change - if (wasJoined) { + if (isJoined()) { QXmppPresence packet = d->client->clientPresence(); - packet.setTo(d->ownJid()); + packet.setTo(d->jid + "/" + nickName); packet.setType(QXmppPresence::Available); d->client->sendPacket(packet); } + else { + d->nickName = nickName; + emit nickNameChanged(nickName); + } } /// Returns the "Full JID" of the given participant. @@ -681,6 +681,12 @@ void QXmppMucRoom::_q_presenceReceived(const QXmppPresence &presence) // check whether this was our own presence if (jid == d->ownJid()) { + const QString newNick = presence.mucItem().nick(); + if (!newNick.isEmpty() && newNick != d->nickName) { + d->nickName = newNick; + emit nickNameChanged(newNick); + return; + } // check whether we were kicked if (presence.mucStatusCodes().contains(307)) { |
