Properly updating the new message marker on buffer switches
authorMarcus Eggenberger <egs@quassel-irc.org>
Fri, 14 Nov 2008 11:20:42 +0000 (12:20 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Fri, 14 Nov 2008 11:20:42 +0000 (12:20 +0100)
The marker got stuck in a recent commit

src/client/networkmodel.cpp
src/client/networkmodel.h
src/uisupport/abstractbuffercontainer.cpp

index 29ebfc9..d1d5fb5 100644 (file)
@@ -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())
index 2c32903..d617986 100644 (file)
@@ -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);
 
index c4cbb19..0ac9b51 100644 (file)
@@ -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();
 }