From: Daniel Albers Date: Mon, 28 Jul 2014 13:55:44 +0000 (+0200) Subject: Merge pull request #77 from seezer/bug821 X-Git-Tag: 0.11.0~21 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=7bfe31852798ccaa67252ad2b67af058e5fe6833;hp=12e650ff4be67680e3e3f31e2aa79653c429756b Merge pull request #77 from seezer/bug821 Don't scroll to bottom unexpectedly. Fixes #821 --- diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 53c43927..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,18 +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); - // FIXME: do we really need to scroll down on resize? + // 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()); + } - // 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(); - _lastScrollbarPos = verticalScrollBar()->maximum(); - verticalScrollBar()->setValue(verticalScrollBar()->maximum()); - + if(atBottom) + { + _lastScrollbarPos = verticalScrollBar()->maximum(); + verticalScrollBar()->setValue(verticalScrollBar()->maximum()); + } checkChatLineCaches(); }