diff --git a/extender.cpp b/extender.cpp index d2dd64662..6dda436e7 100644 --- a/extender.cpp +++ b/extender.cpp @@ -475,17 +475,6 @@ void ExtenderPrivate::adjustSizeHints() q->setMinimumSize(layout->preferredSize()); } - if (applet->layout()) { - applet->layout()->updateGeometry(); - - qreal left, top, right, bottom; - applet->getContentsMargins(&left, &top, &right, &bottom); - QSizeF margins(left + right, top + bottom); - - applet->setMinimumSize(applet->layout()->minimumSize() + margins); - applet->adjustSize(); - } - q->adjustSize(); emit q->geometryChanged(); diff --git a/private/extenderapplet.cpp b/private/extenderapplet.cpp index d95589e74..be5a451aa 100644 --- a/private/extenderapplet.cpp +++ b/private/extenderapplet.cpp @@ -52,6 +52,8 @@ void ExtenderApplet::init() connect(extender(), SIGNAL(itemDetached(Plasma::ExtenderItem*)), this, SLOT(itemDetached(Plasma::ExtenderItem*))); + connect(extender(), SIGNAL(geometryChanged()), + this, SLOT(extenderGeometryChanged())); } void ExtenderApplet::itemDetached(Plasma::ExtenderItem *) @@ -61,6 +63,23 @@ void ExtenderApplet::itemDetached(Plasma::ExtenderItem *) } } +void ExtenderApplet::extenderGeometryChanged() +{ + if (formFactor() != Plasma::Horizontal && + formFactor() != Plasma::Vertical) { + + qreal left, top, right, bottom; + getContentsMargins(&left, &top, &right, &bottom); + QSizeF margins(left + right, top + bottom); + + setMinimumSize(extender()->minimumSize() + margins); + setMaximumSize(extender()->maximumSize() + margins); + setPreferredSize(extender()->preferredSize() + margins); + + adjustSize(); + } +} + } // namespace Plasma #include "extenderapplet_p.moc" diff --git a/private/extenderapplet_p.h b/private/extenderapplet_p.h index 18d43aaab..fb3274b06 100644 --- a/private/extenderapplet_p.h +++ b/private/extenderapplet_p.h @@ -41,6 +41,7 @@ class ExtenderApplet : public Plasma::PopupApplet public Q_SLOTS: void itemDetached(Plasma::ExtenderItem *); + void extenderGeometryChanged(); }; } // namespace Plasma