X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=29ebfc9dfc233ad3f0551726694ed7ccdd9a065f;hp=0ffd9c0aff65d538dc58908e8203d5b8c609ac68;hb=50d5627b282f063e755f44f02a74aeddd1d07538;hpb=c806d8e92f2ccbc2886ffe6257f7597e28c355dd diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 0ffd9c0a..29ebfc9d 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -191,8 +191,9 @@ void BufferItem::setActivityLevel(BufferInfo::ActivityLevel level) { } void BufferItem::updateActivityLevel(const Message &msg) { - if(isCurrentBuffer()) + if(isCurrentBuffer()) { return; + } if(msg.flags() & Message::Self) // don't update activity for our own messages return; @@ -253,6 +254,9 @@ void BufferItem::setBufferName(const QString &name) { void BufferItem::setLastSeenMsgId(const MsgId &msgId) { _lastSeenMsgId = msgId; + if(!isCurrentBuffer()) { + _lastSeenMarkerMsgId = msgId; + } setActivityLevel(BufferInfo::NoActivity); } @@ -916,6 +920,13 @@ MsgId NetworkModel::lastSeenMsgId(BufferId bufferId) { return _bufferItemCache[bufferId]->lastSeenMsgId(); } +MsgId NetworkModel::lastSeenMarkerMsgId(BufferId bufferId) { + if(!_bufferItemCache.contains(bufferId)) + return MsgId(); + + return _bufferItemCache[bufferId]->lastSeenMarkerMsgId(); +} + void NetworkModel::setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId) { BufferItem *bufferItem = findBufferItem(bufferId); if(!bufferItem) { @@ -926,7 +937,10 @@ void NetworkModel::setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId } void NetworkModel::updateBufferActivity(const Message &msg) { - bufferItem(msg.bufferInfo())->updateActivityLevel(msg); + BufferItem *item = bufferItem(msg.bufferInfo()); + item->updateActivityLevel(msg); + if(item->isCurrentBuffer()) + emit setLastSeenMsg(item->bufferId(), msg.msgId()); } void NetworkModel::setBufferActivity(const BufferId &bufferId, BufferInfo::ActivityLevel level) {