diff -r e8a97edfdebc applet/SmoothTasks/Task.cpp --- a/applet/SmoothTasks/Task.cpp Sat Mar 03 23:20:42 2012 +0100 +++ b/applet/SmoothTasks/Task.cpp Mon Mar 19 10:03:15 2012 +0100 @@ -83,6 +83,7 @@ } void Task::itemDestroyed() { + emit destroyed(); m_abstractItem = NULL; m_task = NULL; m_group = NULL; diff -r e8a97edfdebc applet/SmoothTasks/Task.h --- a/applet/SmoothTasks/Task.h Sat Mar 03 23:20:42 2012 +0100 +++ b/applet/SmoothTasks/Task.h Mon Mar 19 10:03:15 2012 +0100 @@ -114,6 +114,7 @@ void updateIcon(const QIcon& icon); void update(); void gotTask(); + void destroyed(); }; } // namespace SmoothTasks diff -r e8a97edfdebc applet/SmoothTasks/TaskItem.cpp --- a/applet/SmoothTasks/TaskItem.cpp Sat Mar 03 23:20:42 2012 +0100 +++ b/applet/SmoothTasks/TaskItem.cpp Mon Mar 19 10:03:15 2012 +0100 @@ -122,6 +122,9 @@ // light connect(m_light, SIGNAL(update()), this, SLOT(update())); + + //destroyed + connect(m_task, SIGNAL(destroyed()), this, SLOT(taskDestroyed())); m_preferredTextLayoutSize = ::SmoothTasks::preferredTextLayoutSize(m_task->text(), KGlobalSettings::taskbarFont()); @@ -833,6 +836,9 @@ Q_UNUSED(option); Q_UNUSED(widget); + if (m_task == NULL) + return; + const QRectF bounds = boundingRect(); if (!bounds.isValid()) @@ -1348,5 +1354,12 @@ return expanderElement(m_applet->location(), m_orientation); } +void TaskItem::taskDestroyed() +{ + m_task = NULL; + m_abstractItem = NULL; + deleteLater(); +} + } // namespace SmoothTasks #include "TaskItem.moc" diff -r e8a97edfdebc applet/SmoothTasks/TaskItem.h --- a/applet/SmoothTasks/TaskItem.h Sat Mar 03 23:20:42 2012 +0100 +++ b/applet/SmoothTasks/TaskItem.h Mon Mar 19 10:03:15 2012 +0100 @@ -190,6 +190,7 @@ void updateToolTip(); void publishIconGeometry(); void updateExpansion(); + void taskDestroyed(); }; } // namespace SmoothTasks