X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fchatview.cpp;h=e8a06f13fab59856b1f9fae4bf5bdbad7a174392;hb=86a1220cc45c658954860e6dedbc18e38986ca94;hp=3c7d8cf9d59ea24d4bc8275a170b54e9a73c73d6;hpb=c6a6c0e4317986792320826956fd5ead2b3e9e67;p=quassel.git diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 3c7d8cf9..e8a06f13 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -54,7 +54,7 @@ ChatView::ChatView(MessageFilter *filter, QWidget *parent) void ChatView::init(MessageFilter *filter) { setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setAlignment(Qt::AlignBottom); + setAlignment(Qt::AlignBottom|Qt::AlignLeft); setInteractive(true); //setOptimizationFlags(QGraphicsView::DontClipPainter | QGraphicsView::DontAdjustForAntialiasing); // setOptimizationFlags(QGraphicsView::DontAdjustForAntialiasing); @@ -66,6 +66,10 @@ void ChatView::init(MessageFilter *filter) { _scrollTimer.setSingleShot(true); connect(&_scrollTimer, SIGNAL(timeout()), SLOT(scrollTimerTimeout())); + _resizeTimer.setInterval(100); + _resizeTimer.setSingleShot(true); + connect(&_resizeTimer, SIGNAL(timeout()), SLOT(resizeTimerTimeout())); + _scene = new ChatScene(filter, filter->idString(), viewport()->width() - 4, this); // see below: resizeEvent() connect(_scene, SIGNAL(sceneRectChanged(const QRectF &)), this, SLOT(sceneRectChanged(const QRectF &))); connect(_scene, SIGNAL(lastLineChanged(QGraphicsItem *, qreal)), this, SLOT(lastLineChanged(QGraphicsItem *, qreal))); @@ -105,6 +109,10 @@ bool ChatView::event(QEvent *event) { void ChatView::resizeEvent(QResizeEvent *event) { QGraphicsView::resizeEvent(event); + _resizeTimer.start(); +} + +void ChatView::resizeTimerTimeout() { // we can reduce viewport updates if we scroll to the bottom allready at the beginning verticalScrollBar()->setValue(verticalScrollBar()->maximum()); @@ -173,9 +181,7 @@ void ChatView::verticalScrollbarChanged(int newPos) { } void ChatView::styleChanged() { - invalidateScene(); - if(scene()) - scene()->update(); + scene()->layout(); } MsgId ChatView::lastMsgId() const {