This _should_ fix the bug, that users quitting the network won't be
[quassel.git] / src / common / networkinfo.cpp
index 5690a26..0ef2f1f 100644 (file)
@@ -183,6 +183,14 @@ IrcUser *NetworkInfo::newIrcUser(const QString &hostmask) {
   return  _ircUsers[nick];
 }
 
   return  _ircUsers[nick];
 }
 
+void NetworkInfo::removeIrcUser(QString nick) {
+  IrcUser *ircuser;
+  if((ircuser = ircUser(nick)) != 0) {
+    ircuser->deleteLater();
+    emit ircUserRemoved(nick);
+  }
+}
+
 IrcUser *NetworkInfo::ircUser(const QString &nickname) const {
   if(_ircUsers.contains(nickname))
     return _ircUsers[nickname];
 IrcUser *NetworkInfo::ircUser(const QString &nickname) const {
   if(_ircUsers.contains(nickname))
     return _ircUsers[nickname];
@@ -331,7 +339,9 @@ void NetworkInfo::ircUserNickChanged(QString newnick) {
 void NetworkInfo::ircUserDestroyed() {
   IrcUser *ircuser = static_cast<IrcUser *>(sender());
   Q_ASSERT(ircuser);
 void NetworkInfo::ircUserDestroyed() {
   IrcUser *ircuser = static_cast<IrcUser *>(sender());
   Q_ASSERT(ircuser);
-  _ircUsers.remove(_ircUsers.key(ircuser));
+  QString nick = _ircUsers.key(ircuser);
+  _ircUsers.remove(nick);
+  emit ircUserRemoved(nick);
 }
 
 void NetworkInfo::channelDestroyed() {
 }
 
 void NetworkInfo::channelDestroyed() {