X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatview.cpp;h=98346ca4638da2905dcc908887722f4f474457e9;hp=5bc02c5758bc7ef5ad3714232ece98d30812e27f;hb=c55bd7dc80547563d8c9cc70d54aa3d24ff03166;hpb=9ce42695baef3bdd6f61aaff23c4b59061e46fe6 diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 5bc02c57..98346ca4 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -30,20 +30,27 @@ #include "quasselui.h" ChatView::ChatView(Buffer *buf, QWidget *parent) : QGraphicsView(parent), AbstractChatView() { - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setAlignment(Qt::AlignBottom); - setInteractive(true); - QList filterList; filterList.append(buf->bufferInfo().bufferId()); MessageFilter *filter = new MessageFilter(Client::messageModel(), filterList, this); + init(filter); + +} + +ChatView::ChatView(MessageFilter *filter, QWidget *parent) : QGraphicsView(parent), AbstractChatView() { + init(filter); +} + +void ChatView::init(MessageFilter *filter) { + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setAlignment(Qt::AlignBottom); + setInteractive(true); _scene = new ChatScene(filter, filter->idString(), this); connect(_scene, SIGNAL(heightChanged(qreal)), this, SLOT(sceneHeightChanged(qreal))); setScene(_scene); } - ChatView::~ChatView() { } @@ -60,7 +67,7 @@ void ChatView::resizeEvent(QResizeEvent *event) { void ChatView::sceneHeightChanged(qreal h) { Q_UNUSED(h) - bool scrollable = verticalScrollBar()->value() == verticalScrollBar()->maximum(); + bool scrollable = qAbs(verticalScrollBar()->value() - verticalScrollBar()->maximum()) <= 2; // be a bit tolerant here, also FIXME (why we need this?) setSceneRect(scene()->sceneRect()); if(scrollable) verticalScrollBar()->setValue(verticalScrollBar()->maximum()); }