X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorebuffersyncer.cpp;fp=src%2Fcore%2Fcorebuffersyncer.cpp;h=caed62e24dba841ca4a66db97278bda869604bbe;hp=98451491ecfff2f2464ec4663735e81c3b21e0e4;hb=fd16e241d2fd1f33f4625b3255956f025a67273b;hpb=502b47a608a55374bd28b6b698971f9f697e2d20 diff --git a/src/core/corebuffersyncer.cpp b/src/core/corebuffersyncer.cpp index 98451491..caed62e2 100644 --- a/src/core/corebuffersyncer.cpp +++ b/src/core/corebuffersyncer.cpp @@ -34,17 +34,20 @@ public: INIT_SYNCABLE_OBJECT(CoreBufferSyncer) CoreBufferSyncer::CoreBufferSyncer(CoreSession *parent) - : BufferSyncer(Core::bufferLastSeenMsgIds(parent->user()), Core::bufferMarkerLineMsgIds(parent->user()), parent), + : BufferSyncer(Core::bufferLastSeenMsgIds(parent->user()), Core::bufferMarkerLineMsgIds(parent->user()), Core::bufferActivities(parent->user()), parent), _coreSession(parent), _purgeBuffers(false) { + connect(parent, SIGNAL(displayMsg(Message)), SLOT(addBufferActivity(Message))); } void CoreBufferSyncer::requestSetLastSeenMsg(BufferId buffer, const MsgId &msgId) { - if (setLastSeenMsg(buffer, msgId)) + if (setLastSeenMsg(buffer, msgId)) { + setBufferActivity(buffer, (int) Core::bufferActivity(buffer, msgId)); dirtyLastSeenBuffers << buffer; + } } @@ -71,8 +74,13 @@ void CoreBufferSyncer::storeDirtyIds() Core::setBufferMarkerLineMsg(userId, bufferId, msgId); } + foreach(BufferId bufferId, dirtyActivities) { + Core::setBufferActivity(userId, bufferId, activity(bufferId)); + } + dirtyLastSeenBuffers.clear(); dirtyMarkerLineBuffers.clear(); + dirtyActivities.clear(); } @@ -181,3 +189,8 @@ void CoreBufferSyncer::purgeBufferIds() } } } + +void CoreBufferSyncer::setBufferActivity(BufferId buffer, const int &activity) { + BufferSyncer::setBufferActivity(buffer, activity); + dirtyActivities << buffer; +}