X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fircserverhandler.cpp;h=97e00587c15207b270174cd93d2d3007f07bc853;hp=d51bb0d688d2732318bdc5f312318abd318ad82c;hb=32dee9bed2840534e41764a6ba759d425837b8a2;hpb=863b09125c3bed80b3dfa65eacf587d8bcd3e1e3 diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index d51bb0d6..97e00587 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-10 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -33,7 +33,7 @@ #include IrcServerHandler::IrcServerHandler(CoreNetwork *parent) - : BasicHandler(parent), + : CoreBasicHandler(parent), _whois(false) { connect(parent, SIGNAL(disconnected(NetworkId)), this, SLOT(destroyNetsplits())); @@ -1077,17 +1077,20 @@ void IrcServerHandler::handleNetsplitJoin(const QString &channel, const QStringL } QList ircUsers; QStringList newModes = modes; + QStringList newUsers = users; foreach(QString user, users) { - IrcUser *iu = network()->updateNickFromMask(user); + IrcUser *iu = network()->ircUser(nickFromMask(user)); if(iu) ircUsers.append(iu); - else { - newModes.removeAt(users.indexOf(user)); + else { // the user already quit + int idx = users.indexOf(user); + newUsers.removeAt(idx); + newModes.removeAt(idx); } } - QString msg = users.join("#:#").append("#:#").append(quitMessage); + QString msg = newUsers.join("#:#").append("#:#").append(quitMessage); emit displayMsg(Message::NetsplitJoin, BufferInfo::ChannelBuffer, channel, msg); ircChannel->joinIrcUsers(ircUsers, newModes); } @@ -1165,7 +1168,6 @@ bool IrcServerHandler::checkParamCount(const QString &methodName, const QList