diff --git a/widgets/scrollwidget.cpp b/widgets/scrollwidget.cpp index d61d9022d..f5fd3fbb6 100644 --- a/widgets/scrollwidget.cpp +++ b/widgets/scrollwidget.cpp @@ -162,6 +162,8 @@ public: widgetSize.setHeight(scrollingWidget->size().height()-borderSize); } widget.data()->resize(widgetSize); + + adjustClipping(); } void verticalScroll(int value) @@ -270,6 +272,7 @@ public: QSetdragHandles; bool dragging; int animId; + QTimer *adjustScrollbarsTimer; static const int borderSize = 4; }; @@ -287,6 +290,10 @@ ScrollWidget::ScrollWidget(QGraphicsWidget *parent) d->borderSvg = new Plasma::Svg(this); d->borderSvg->setImagePath("widgets/scrollwidget"); + d->adjustScrollbarsTimer = new QTimer(this); + d->adjustScrollbarsTimer->setSingleShot(true); + connect(d->adjustScrollbarsTimer, SIGNAL(timeout()), this, SLOT(adjustScrollbars())); + d->verticalScrollBarPolicy = Qt::ScrollBarAsNeeded; d->verticalScrollBar = new Plasma::ScrollBar(this); d->verticalScrollBar->setFocusPolicy(Qt::NoFocus); @@ -326,7 +333,7 @@ void ScrollWidget::setWidget(QGraphicsWidget *widget) widget->setParentItem(d->scrollingWidget); widget->setPos(QPoint(0,0)); widget->installEventFilter(this); - d->adjustScrollbars(); + d->adjustScrollbarsTimer->start(200); } } @@ -478,9 +485,7 @@ void ScrollWidget::resizeEvent(QGraphicsSceneResizeEvent *event) return; } - d->adjustScrollbars(); - - d->adjustClipping(); + d->adjustScrollbarsTimer->start(200); //if topBorder exists bottomBorder too if (d->topBorder) { @@ -541,10 +546,7 @@ bool ScrollWidget::eventFilter(QObject *watched, QEvent *event) } if (watched == d->widget.data() && event->type() == QEvent::GraphicsSceneResize) { - d->adjustScrollbars(); - d->adjustClipping(); - //force to refresh the size hint - layout()->invalidate(); + d->adjustScrollbarsTimer->start(200); } else if (watched == d->widget.data() && event->type() == QEvent::GraphicsSceneMove) { d->horizontalScrollBar->blockSignals(true); d->verticalScrollBar->blockSignals(true); diff --git a/widgets/scrollwidget.h b/widgets/scrollwidget.h index 59aed0eac..ffb5ba25b 100644 --- a/widgets/scrollwidget.h +++ b/widgets/scrollwidget.h @@ -58,6 +58,7 @@ public: * @arg parent the parent of this widget */ explicit ScrollWidget(QGraphicsWidget *parent = 0); + explicit ScrollWidget(QGraphicsItem *parent = 0); ~ScrollWidget(); /** @@ -200,6 +201,7 @@ private: Q_PRIVATE_SLOT(d, void makeRectVisible()) Q_PRIVATE_SLOT(d, void makeItemVisible()) Q_PRIVATE_SLOT(d, void cleanupDragHandles(QObject *destroyed)) + Q_PRIVATE_SLOT(d, void adjustScrollbars()) }; } // namespace Plasma