X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=ae4409193935cb3420018fe8ec887b1395966558;hb=0a1c1ff4f99a7eb53ff6cdd95ce5d7ac263e77d2;hp=8b087d588d4d29e728a6013e7916c10b25729eb1;hpb=7e20c659f88e26ccdfdc65f4894ed6ecf61ca8a9;p=quassel.git diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 8b087d58..ae440919 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -971,6 +971,7 @@ MsgId NetworkModel::lastSeenMsgId(const BufferId &bufferId) { BufferItem *bufferItem = findBufferItem(bufferId); if(!bufferItem) { qDebug() << "NetworkModel::lastSeenMsgId(): buffer is unknown:" << bufferId; + Client::purgeKnownBufferIds(); return MsgId(); } return bufferItem->lastSeenMsgId(); @@ -980,6 +981,7 @@ void NetworkModel::setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId BufferItem *bufferItem = findBufferItem(bufferId); if(!bufferItem) { qDebug() << "NetworkModel::setLastSeenMsgId(): buffer is unknown:" << bufferId; + Client::purgeKnownBufferIds(); return; } bufferItem->setLastSeenMsgId(msgId); @@ -1003,6 +1005,16 @@ void NetworkModel::updateBufferActivity(Message &msg) { msg.setFlags(msg.flags() | Message::Redirected); redirectionTarget = _errorMsgsTarget; break; + // Update IrcUser's last activity + case Message::Plain: + case Message::Action: + if(bufferType(msg.bufferId()) == BufferInfo::ChannelBuffer) { + const Network *net = Client::network(msg.bufferInfo().networkId()); + IrcUser *user = net ? net->ircUser(nickFromMask(msg.sender())) : 0; + if(user) + user->setLastChannelActivity(msg.bufferId(), msg.timestamp()); + } + break; default: break; }