aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2013-03-12 09:03:46 +0100
committerJeremy Lainé <jeremy.laine@m4x.org>2013-03-12 09:03:46 +0100
commit9565e3b3684eb5ba5ca8a3d818f51d5f59f5ca0f (patch)
treea70b8740062d3cd8db34c730250834ef746e33c2 /src
parent9400b2a5ec1d79f09dcdacc9b3754ed2952b5e50 (diff)
parent3271cb0f62bb674a0ff1987ec08c49498edece62 (diff)
downloadqxmpp-9565e3b3684eb5ba5ca8a3d818f51d5f59f5ca0f.tar.gz
Merge branch 'master' of https://code.google.com/p/qxmpp
Diffstat (limited to 'src')
-rw-r--r--src/client/QXmppMucManager.cpp18
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)) {