From ef64072b4ae0341e22a363180c5db01c603e00d0 Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Tue, 18 Jan 2011 18:59:27 +0000 Subject: [PATCH] remove the item pointer from all collections when it is deleted as it is also added to all of them when first added BUG:263565 svn path=/trunk/KDE/kdelibs/; revision=1215440 --- extenders/extender.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/extenders/extender.cpp b/extenders/extender.cpp index 90da659c3..2d5ce179d 100644 --- a/extenders/extender.cpp +++ b/extenders/extender.cpp @@ -489,7 +489,7 @@ void Extender::dropEvent(QGraphicsSceneDragDropEvent *event) void Extender::itemAddedEvent(ExtenderItem *item, const QPointF &pos) { - ExtenderGroup *group = item->isGroup()?static_cast(item):0; + ExtenderGroup *group = item->isGroup() ? static_cast(item) : 0; if (group && group->autoHide() && group->items().isEmpty()) { return; } @@ -670,7 +670,7 @@ void ExtenderPrivate::addExtenderItem(ExtenderItem *item, const QPointF &pos) QObject::connect(item, SIGNAL(destroyed(Plasma::ExtenderItem*)), q, SLOT(extenderItemDestroyed(Plasma::ExtenderItem*))); attachedExtenderItems.append(item); q->itemHoverLeaveEvent(item); - pendingItems[item] = pos; + pendingItems.insert(item, pos); QTimer::singleShot(0, q, SLOT(delayItemAddedEvent())); } @@ -874,12 +874,11 @@ ExtenderGroup *ExtenderPrivate::findGroup(const QString &name) const void ExtenderPrivate::extenderItemDestroyed(Plasma::ExtenderItem *item) { - if (item && attachedExtenderItems.contains(item)) { + pendingItems.remove(item); + + if (attachedExtenderItems.contains(item)) { + // removeExtenderItem also removes the item from attachedExtenderItems removeExtenderItem(item); - } else if (pendingItems.contains(item)) { - pendingItems.remove(item); - } else { - attachedExtenderItems.removeAll(item); } }