diff --git a/extenders/extender.cpp b/extenders/extender.cpp index f2937f96f..37d60119f 100644 --- a/extenders/extender.cpp +++ b/extenders/extender.cpp @@ -550,7 +550,7 @@ void ExtenderPrivate::addExtenderItem(ExtenderItem *item, const QPointF &pos) return; } - QObject::connect(item, SIGNAL(destroyed(QObject *)), q, SLOT(extenderItemDestroyed(QObject *))); + QObject::connect(item, SIGNAL(destroyed(ExtenderItem*)), q, SLOT(extenderItemDestroyed(ExtenderItem*))); attachedExtenderItems.append(item); q->itemHoverLeaveEvent(item); q->itemAddedEvent(item, pos); @@ -721,9 +721,8 @@ ExtenderGroup *ExtenderPrivate::findGroup(const QString &name) const return 0; } -void ExtenderPrivate::extenderItemDestroyed(QObject *object) +void ExtenderPrivate::extenderItemDestroyed(ExtenderItem *item) { - ExtenderItem *item = qobject_cast(object); if (item && attachedExtenderItems.contains(item)) { removeExtenderItem(item); } diff --git a/extenders/extender.h b/extenders/extender.h index 45026aafc..b2331176f 100644 --- a/extenders/extender.h +++ b/extenders/extender.h @@ -303,7 +303,7 @@ class PLASMA_EXPORT Extender : public QGraphicsWidget private: ExtenderPrivate *const d; - Q_PRIVATE_SLOT(d, void extenderItemDestroyed(QObject *object)) + Q_PRIVATE_SLOT(d, void extenderItemDestroyed(ExtenderItem *item)) friend class ExtenderPrivate; friend class ExtenderGroup; diff --git a/extenders/extenderitem.cpp b/extenders/extenderitem.cpp index be48cb8b5..fd072d806 100644 --- a/extenders/extenderitem.cpp +++ b/extenders/extenderitem.cpp @@ -141,6 +141,7 @@ ExtenderItem::ExtenderItem(Extender *hostExtender, uint extenderItemId) ExtenderItem::~ExtenderItem() { + emit destroyed(this); //make sure the original mousepointer always get's restored. if (d->mouseOver) { QApplication::restoreOverrideCursor(); diff --git a/extenders/extenderitem.h b/extenders/extenderitem.h index 792efa6b1..3b70e11d3 100644 --- a/extenders/extenderitem.h +++ b/extenders/extenderitem.h @@ -254,6 +254,13 @@ class PLASMA_EXPORT ExtenderItem : public QGraphicsWidget */ void hideCloseButton(); + Q_SIGNALS: + /** + * Emitted when the extender item is destroyed + * @since 4.4.1 + */ + void destroyed(ExtenderItem *item); + protected: void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); diff --git a/private/extender_p.h b/private/extender_p.h index 0505eda97..9b961cb48 100644 --- a/private/extender_p.h +++ b/private/extender_p.h @@ -47,7 +47,7 @@ class ExtenderPrivate ~ExtenderPrivate(); void addExtenderItem(ExtenderItem *item, const QPointF &pos = QPointF(-1, -1)); - void extenderItemDestroyed(QObject *object); + void extenderItemDestroyed(ExtenderItem *item); void removeExtenderItem(ExtenderItem *item); int insertIndexFromPos(const QPointF &pos) const; void loadExtenderItems();