From a56fc2ed446d14178c981002be5e7314ea5dadbe Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Tue, 26 Jan 2010 06:06:43 +0000 Subject: [PATCH] alter the toolbox backer layout when the items change BUG:224278 svn path=/trunk/KDE/kdelibs/; revision=1080323 --- private/desktoptoolbox.cpp | 32 +++++++++++++++++++++++--------- private/desktoptoolbox_p.h | 2 ++ private/internaltoolbox_p.h | 2 +- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/private/desktoptoolbox.cpp b/private/desktoptoolbox.cpp index 29c55e039..4a4ca23b7 100644 --- a/private/desktoptoolbox.cpp +++ b/private/desktoptoolbox.cpp @@ -518,9 +518,31 @@ void DesktopToolBox::showToolBox() } d->toolBacker->setZValue(zValue() + 1); - d->toolBacker->clearLayout(); d->toolBacker->setIsToolbar(isToolbar()); + adjustToolBackerGeometry(); + + d->toolBacker->setOpacity(0); + d->toolBacker->show(); + Plasma::Animation *fadeAnim = Animator::create(Animator::FadeAnimation, d->toolBacker); + fadeAnim->setTargetWidget(d->toolBacker); + fadeAnim->setProperty("startOpacity", 0); + fadeAnim->setProperty("targetOpacity", 1); + fadeAnim->start(QAbstractAnimation::DeleteWhenStopped); +} + +void DesktopToolBox::updateToolBox() +{ + adjustToolBackerGeometry(); +} + +void DesktopToolBox::adjustToolBackerGeometry() +{ + if (!d->toolBacker) { + return; + } + + d->toolBacker->clearLayout(); QMap t = tools(); QMapIterator it(t); while (it.hasNext()) { @@ -616,14 +638,6 @@ void DesktopToolBox::showToolBox() d->toolBacker->setPos(x, mapFromParent(QPointF(0, parentSize.height() - 5 - backerRect.height())).y()); } } - - d->toolBacker->setOpacity(0); - d->toolBacker->show(); - Plasma::Animation *fadeAnim = Animator::create(Animator::FadeAnimation, d->toolBacker); - fadeAnim->setTargetWidget(d->toolBacker); - fadeAnim->setProperty("startOpacity", 0); - fadeAnim->setProperty("targetOpacity", 1); - fadeAnim->start(QAbstractAnimation::DeleteWhenStopped); } void DesktopToolBox::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) diff --git a/private/desktoptoolbox_p.h b/private/desktoptoolbox_p.h index 9ad194fd0..7533efa16 100644 --- a/private/desktoptoolbox_p.h +++ b/private/desktoptoolbox_p.h @@ -61,6 +61,7 @@ public: public Q_SLOTS: void toolTipAboutToShow(); void toolTipHidden(); + void updateToolBox(); protected: void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); @@ -79,6 +80,7 @@ protected Q_SLOTS: void toggle(); private: void highlight(bool highlighting); + void adjustToolBackerGeometry(); DesktopToolBoxPrivate *d; }; diff --git a/private/internaltoolbox_p.h b/private/internaltoolbox_p.h index 5cde6882c..e5d47e9db 100644 --- a/private/internaltoolbox_p.h +++ b/private/internaltoolbox_p.h @@ -99,7 +99,7 @@ public Q_SLOTS: /** * re-show the toolbox, in case any tools have changed */ - void updateToolBox(); + virtual void updateToolBox(); protected: Containment *containment();