projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixing weired behavior and/or crashes for dynamic backlog replay
[quassel.git]
/
src
/
client
/
messagemodel.cpp
diff --git
a/src/client/messagemodel.cpp
b/src/client/messagemodel.cpp
index
07d0cca
..
7297f4b
100644
(file)
--- a/
src/client/messagemodel.cpp
+++ b/
src/client/messagemodel.cpp
@@
-121,6
+121,7
@@
void MessageModel::insertMessageGroup(const QList<Message> &msglist) {
delete oldItem;
endRemoveRows();
start--;
delete oldItem;
endRemoveRows();
start--;
+ end--;
}
}
}
}
@@
-148,17
+149,22
@@
void MessageModel::insertMessageGroup(const QList<Message> &msglist) {
if(dayChangeItem)
end++;
if(dayChangeItem)
end++;
+ Q_ASSERT(start == 0 || _messageList[start - 1]->msgId() < msglist.first().msgId());
+ Q_ASSERT(start == _messageList.count() || _messageList[start]->msgId() > msglist.last().msgId());
beginInsertRows(QModelIndex(), start, end);
beginInsertRows(QModelIndex(), start, end);
+ int pos = start;
foreach(Message msg, msglist) {
foreach(Message msg, msglist) {
- _messageList.insert(
start
, createMessageModelItem(msg));
-
start
++;
+ _messageList.insert(
pos
, createMessageModelItem(msg));
+
pos
++;
}
if(dayChangeItem) {
}
if(dayChangeItem) {
- _messageList.insert(
start
, dayChangeItem);
-
start
++; // needed for the following assert
+ _messageList.insert(
pos
, dayChangeItem);
+
pos
++; // needed for the following assert
}
endInsertRows();
}
endInsertRows();
- Q_ASSERT(start - 1 == end);
+ Q_ASSERT(start == 0 || _messageList[start - 1]->msgId() < _messageList[start]->msgId());
+ Q_ASSERT(end + 1 == _messageList.count() || _messageList[end]->msgId() < _messageList[end + 1]->msgId());
+ Q_ASSERT(pos - 1 == end);
}
int MessageModel::insertMessagesGracefully(const QList<Message> &msglist) {
}
int MessageModel::insertMessagesGracefully(const QList<Message> &msglist) {
@@
-310,7
+316,6
@@
int MessageModel::indexForId(MsgId id) {
void MessageModel::changeOfDay() {
_dayChangeTimer.setInterval(86400000);
void MessageModel::changeOfDay() {
_dayChangeTimer.setInterval(86400000);
- qDebug() << _nextDayChange;
if(!_messageList.isEmpty()) {
int idx = _messageList.count();
while(idx > 0 && _messageList[idx - 1]->timeStamp() > _nextDayChange) {
if(!_messageList.isEmpty()) {
int idx = _messageList.count();
while(idx > 0 && _messageList[idx - 1]->timeStamp() > _nextDayChange) {