From f2fec057b3fa59cdf918fc6598ce208d4f8e8555 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Wed, 29 Jul 2009 17:49:54 +0200 Subject: [PATCH] Introduce a timer for resizing the ChatView This allows for smooth resizing, as the layout is only calculated at most once every 100ms. --- src/qtui/chatview.cpp | 10 +++++++++- src/qtui/chatview.h | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 3c7d8cf9..866ad4e6 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()); diff --git a/src/qtui/chatview.h b/src/qtui/chatview.h index 6f385bb7..8ebe3a57 100644 --- a/src/qtui/chatview.h +++ b/src/qtui/chatview.h @@ -68,6 +68,7 @@ private slots: void lastLineChanged(QGraphicsItem *chatLine, qreal offset); void mouseMoveWhileSelecting(const QPointF &scenePos); void scrollTimerTimeout(); + void resizeTimerTimeout(); void styleChanged(); private: @@ -79,6 +80,7 @@ private: qreal _currentScaleFactor; QTimer _scrollTimer; int _scrollOffset; + QTimer _resizeTimer; }; -- 2.20.1