X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatview.cpp;h=7197a24edcfc2a07eb71708b126089d14b937910;hp=53c4392733a08f7520a2ad25a6f3122090f75042;hb=e56629542168c203cac8504085fc96c7f7b73d90;hpb=9d54503555534a2c554f09a33df6afa33d6308ec diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 53c43927..7197a24e 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -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(); }