File r900343.diff of Package kdepim4
Subject: ktimetracker: fix crash when deleting the last task
From: wstephenson@suse.de
Bug: kde:173543
Patch-upstream: 900343
--- ktimetracker/taskview.cpp (revision 900342)
+++ ktimetracker/taskview.cpp (revision 900343)
@@ -930,6 +930,7 @@ void TaskView::deleteTaskBatch( Task* ta
_idleTimeDetector->stopIdleDetection();
emit timersInactive();
}
+ task->delete_recursive();
emit tasksChanged( d->mActiveTasks );
}
@@ -968,7 +969,7 @@ void TaskView::deleteTask( Task* task )
for (int n=delendum.size()-1; n>=0; --n)
deleteTaskBatch(itemAt(delendum[n]));
}
- d->mStorage->buildTaskView(this);
+ //d->mStorage->buildTaskView(this);
}
void TaskView::markTaskAsComplete()
--- ktimetracker/task.cpp (revision 900342)
+++ ktimetracker/task.cpp (revision 900343)
@@ -142,6 +142,16 @@ Task::~Task()
delete mTimer;
}
+void Task::delete_recursive()
+{
+ while ( this->child(0) )
+ {
+ Task* t=(Task*) this->child(0);
+ t->delete_recursive();
+ }
+ delete this;
+}
+
void Task::setRunning( bool on, KarmStorage* storage, const QDateTime &when )
// This is the back-end, the front-end is StartTimerFor()
{
--- ktimetracker/task.h (revision 900342)
+++ ktimetracker/task.h (revision 900343)
@@ -86,6 +86,8 @@ class Task : public QObject, public QTre
/** Return unique iCalendar Todo ID for this task. */
QString uid() const;
+ void delete_recursive();
+
int depth();
/**
Index: ktimetracker/taskview.cpp
===================================================================
Index: ktimetracker/task.cpp
===================================================================
Index: ktimetracker/task.h
===================================================================