From: Marcus Eggenberger Date: Sat, 4 Oct 2008 11:14:56 +0000 (+0200) Subject: fixing wrong positioning of items (fixes overlapping daychange bug) X-Git-Tag: 0.3.1~209 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=8a4544df5632a46407697b6b3f172d75037ae25b fixing wrong positioning of items (fixes overlapping daychange bug) --- diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index b5dd4528..4734d9c9 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -122,20 +122,28 @@ void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) { QPointF contentsPos(secondColumnHandle()->sceneRight(), 0); QPointF senderPos(firstColumnHandle()->sceneRight(), 0); - for(int i = start; i <= end; i++) { - ChatLine *line = new ChatLine(i, model(), - width, - timestampWidth, senderWidth, contentsWidth, - senderPos, contentsPos); - if(atTop) { + if(atTop) { + for(int i = end; i >= start; i--) { + ChatLine *line = new ChatLine(i, model(), + width, + timestampWidth, senderWidth, contentsWidth, + senderPos, contentsPos); h += line->height(); line->setPos(0, y-h); - } else { + _lines.insert(start, line); + addItem(line); + } + } else { + for(int i = start; i <= end; i++) { + ChatLine *line = new ChatLine(i, model(), + width, + timestampWidth, senderWidth, contentsWidth, + senderPos, contentsPos); line->setPos(0, y+h); h += line->height(); + _lines.insert(i, line); + addItem(line); } - _lines.insert(i, line); - addItem(line); } // update existing items @@ -166,7 +174,7 @@ void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) { moveEnd = end; } else { // move bottom part - moveStart = start; + moveStart = end + 1; } ChatLine *line = 0; for(int i = moveStart; i <= moveEnd; i++) {