X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fchatview.cpp;h=20b25e0e89606fc8cbc5f68199424e268c0d4ba6;hb=1f58e3506add8dc546c1e98367dce2cd24e5773d;hp=b40b29009c023b45a75920936c45764e7bdcbecb;hpb=777799ecd614503b20c0fc9d31223556ecc6078b;p=quassel.git diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index b40b2900..20b25e0e 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -80,7 +80,7 @@ void ChatView::init(MessageFilter *filter) setScene(_scene); connect(verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(verticalScrollbarChanged(int))); - _lastScrollbarPos = verticalScrollBar()->value(); + _lastScrollbarPos = verticalScrollBar()->maximum(); connect(Client::networkModel(), SIGNAL(markerLineSet(BufferId, MsgId)), SLOT(markerLineSet(BufferId, MsgId))); @@ -126,11 +126,26 @@ bool ChatView::event(QEvent *event) void ChatView::resizeEvent(QResizeEvent *event) { + // if view is currently scrolled to bottom, we want it that way after resizing + bool atBottom = (_lastScrollbarPos == verticalScrollBar()->maximum()); + QGraphicsView::resizeEvent(event); + // if scrolling to bottom, do it immediately. + if(atBottom) + { + // we can reduce viewport updates if we scroll to the bottom allready at the beginning + verticalScrollBar()->setValue(verticalScrollBar()->maximum()); + } + scene()->updateForViewport(viewport()->width(), viewport()->height()); adjustSceneRect(); + if(atBottom) + { + _lastScrollbarPos = verticalScrollBar()->maximum(); + verticalScrollBar()->setValue(verticalScrollBar()->maximum()); + } checkChatLineCaches(); }