diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2013-03-12 09:03:46 +0100 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2013-03-12 09:03:46 +0100 |
| commit | 9565e3b3684eb5ba5ca8a3d818f51d5f59f5ca0f (patch) | |
| tree | a70b8740062d3cd8db34c730250834ef746e33c2 /src | |
| parent | 9400b2a5ec1d79f09dcdacc9b3754ed2952b5e50 (diff) | |
| parent | 3271cb0f62bb674a0ff1987ec08c49498edece62 (diff) | |
| download | qxmpp-9565e3b3684eb5ba5ca8a3d818f51d5f59f5ca0f.tar.gz | |
Merge branch 'master' of https://code.google.com/p/qxmpp
Diffstat (limited to 'src')
| -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)) { |
