From adff595449304996ee1a5b21f9ee768f83e0a4b1 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Fri, 14 Nov 2008 12:20:42 +0100 Subject: [PATCH] Properly updating the new message marker on buffer switches The marker got stuck in a recent commit --- src/client/networkmodel.cpp | 15 +++++++++++++++ src/client/networkmodel.h | 2 ++ src/uisupport/abstractbuffercontainer.cpp | 3 +-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 29ebfc9d..d1d5fb50 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -190,6 +190,12 @@ void BufferItem::setActivityLevel(BufferInfo::ActivityLevel level) { } } +void BufferItem::clearActivityLevel() { + _activity = BufferInfo::NoActivity; + _lastSeenMarkerMsgId = _lastSeenMsgId; + emit dataChanged(); +} + void BufferItem::updateActivityLevel(const Message &msg) { if(isCurrentBuffer()) { return; @@ -952,6 +958,15 @@ void NetworkModel::setBufferActivity(const BufferId &bufferId, BufferInfo::Activ bufferItem->setActivityLevel(level); } +void NetworkModel::clearBufferActivity(const BufferId &bufferId) { + BufferItem *bufferItem = findBufferItem(bufferId); + if(!bufferItem) { + qDebug() << "NetworkModel::clearBufferActivity(): buffer is unknown:" << bufferId; + return; + } + bufferItem->clearActivityLevel(); +} + const Network *NetworkModel::networkByIndex(const QModelIndex &index) const { QVariant netVariant = index.data(NetworkIdRole); if(!netVariant.isValid()) diff --git a/src/client/networkmodel.h b/src/client/networkmodel.h index 2c329035..d6179865 100644 --- a/src/client/networkmodel.h +++ b/src/client/networkmodel.h @@ -114,6 +114,7 @@ public: void setLastSeenMsgId(const MsgId &msgId); inline BufferInfo::ActivityLevel activityLevel() const { return _activity; } void setActivityLevel(BufferInfo::ActivityLevel level); + void clearActivityLevel(); void updateActivityLevel(const Message &msg); bool isCurrentBuffer() const; @@ -313,6 +314,7 @@ public slots: void removeBuffer(BufferId bufferId); void setLastSeenMsgId(const BufferId &bufferId, const MsgId &msgId); void setBufferActivity(const BufferId &bufferId, BufferInfo::ActivityLevel activity); + void clearBufferActivity(const BufferId &bufferId); void updateBufferActivity(const Message &msg); void networkRemoved(const NetworkId &networkId); diff --git a/src/uisupport/abstractbuffercontainer.cpp b/src/uisupport/abstractbuffercontainer.cpp index c4cbb197..0ac9b51f 100644 --- a/src/uisupport/abstractbuffercontainer.cpp +++ b/src/uisupport/abstractbuffercontainer.cpp @@ -91,7 +91,6 @@ void AbstractBufferContainer::setCurrentBuffer(BufferId bufferId) { _currentBuffer = bufferId; showChatView(bufferId); - Client::networkModel()->setBufferActivity(bufferId, BufferInfo::NoActivity); - Client::setBufferLastSeenMsg(bufferId, _chatViews[bufferId]->lastMsgId()); + Client::networkModel()->clearBufferActivity(bufferId); setFocus(); } -- 2.20.1