From: Marcus Eggenberger Date: Thu, 5 Nov 2009 13:34:27 +0000 (+0100) Subject: fixing weird scrolling behavior when fetching dynamic backlog X-Git-Tag: 0.6-beta1~189 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=ad1565e214bd8f51798d378ec82f4cdf094bd122 fixing weird scrolling behavior when fetching dynamic backlog --- diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index 86a461bb..af502819 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -230,25 +230,11 @@ void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) { } // neither pre- or append means we have to do dirty work: move items... - int moveStart = 0; - int moveEnd = _lines.count() - 1; - qreal offset = h; if(!(atTop || atBottom)) { - // move top means: moving 0 to end (aka: end + 1) - // move top means: moving end + 1 to _lines.count() - 1 (aka: _lines.count() - (end + 1) - if(end + 1 < _lines.count() - end - 1) { - // move top part - moveTop = true; - offset = -offset; - moveEnd = end; - } else { - // move bottom part - moveStart = end + 1; - } ChatLine *line = 0; - for(int i = moveStart; i <= moveEnd; i++) { + for(int i = 0; i <= end; i++) { line = _lines.at(i); - line->setPos(0, line->pos().y() + offset); + line->setPos(0, line->pos().y() - h); } } @@ -285,7 +271,7 @@ void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) { _firstLineRow = -1; } updateSceneRect(); - if(atBottom || (!atTop && !moveTop)) { + if(atBottom) { emit lastLineChanged(_lines.last(), h); } } @@ -858,6 +844,7 @@ void ChatScene::updateSceneRect(qreal width) { ChatLine *firstLine = _lines.at(_firstLineRow); ChatLine *lastLine = _lines.last(); updateSceneRect(QRectF(0, firstLine->pos().y(), width, lastLine->pos().y() + lastLine->height() - firstLine->pos().y())); + qDebug() << idString() << "top:" << sceneRect().y() << "height:" << sceneRect().height(); } else { // empty scene rect updateSceneRect(QRectF(0, 0, width, 0));