projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new internal hot buffers list
[quassel.git]
/
src
/
client
/
networkmodel.cpp
diff --git
a/src/client/networkmodel.cpp
b/src/client/networkmodel.cpp
index
ae44091
..
f5442be
100644
(file)
--- a/
src/client/networkmodel.cpp
+++ b/
src/client/networkmodel.cpp
@@
-216,6
+216,7
@@
void BufferItem::setActivityLevel(BufferInfo::ActivityLevel level) {
void BufferItem::clearActivityLevel() {
_activity = BufferInfo::NoActivity;
_lastSeenMarkerMsgId = _lastSeenMsgId;
void BufferItem::clearActivityLevel() {
_activity = BufferInfo::NoActivity;
_lastSeenMarkerMsgId = _lastSeenMsgId;
+ _firstUnreadMsgId = MsgId();
emit dataChanged();
}
emit dataChanged();
}
@@
-227,9
+228,15
@@
void BufferItem::updateActivityLevel(const Message &msg) {
if(msg.flags() & Message::Self) // don't update activity for our own messages
return;
if(msg.flags() & Message::Self) // don't update activity for our own messages
return;
- if(
lastSeenMsgId() >= msg.m
sgId())
+ if(
msg.msgId() <= lastSeenM
sgId())
return;
return;
+ bool stateChanged = false;
+ if(!firstUnreadMsgId().isValid() || msg.msgId() < firstUnreadMsgId()) {
+ stateChanged = true;
+ _firstUnreadMsgId = msg.msgId();
+ }
+
BufferInfo::ActivityLevel oldLevel = activityLevel();
_activity |= BufferInfo::OtherActivity;
BufferInfo::ActivityLevel oldLevel = activityLevel();
_activity |= BufferInfo::OtherActivity;
@@
-239,7
+246,9
@@
void BufferItem::updateActivityLevel(const Message &msg) {
if(msg.flags() & Message::Highlight)
_activity |= BufferInfo::Highlight;
if(msg.flags() & Message::Highlight)
_activity |= BufferInfo::Highlight;
- if(oldLevel != _activity)
+ stateChanged |= (oldLevel != _activity);
+
+ if(stateChanged)
emit dataChanged();
}
emit dataChanged();
}
@@
-259,6
+268,8
@@
QVariant BufferItem::data(int column, int role) const {
return isActive();
case NetworkModel::BufferActivityRole:
return (int)activityLevel();
return isActive();
case NetworkModel::BufferActivityRole:
return (int)activityLevel();
+ case NetworkModel::BufferFirstUnreadMsgIdRole:
+ return qVariantFromValue(firstUnreadMsgId());
default:
return PropertyMapItem::data(column, role);
}
default:
return PropertyMapItem::data(column, role);
}