Browse Source

Merge branch 'simplify-workflow-memory-management'

* simplify-workflow-memory-management:
  Delegates memory management of all steps to ctkWorkflow
Jean-Christophe Fillion-Robin 13 years ago
parent
commit
33d1d51583
2 changed files with 13 additions and 6 deletions
  1. 1 6
      Libs/Core/ctkWorkflow.cpp
  2. 12 0
      Libs/Widgets/ctkWorkflowWidget.cpp

+ 1 - 6
Libs/Core/ctkWorkflow.cpp

@@ -562,12 +562,7 @@ ctkWorkflow::~ctkWorkflow()
   // Clean registered step
   while (!d->RegisteredSteps.isEmpty())
     {
-    ctkWorkflowStep * step = d->RegisteredSteps.takeFirst();
-    if (!step->isWidgetType())
-      {
-      delete step;
-      }
-
+    delete d->RegisteredSteps.takeFirst();
     }
 }
 

+ 12 - 0
Libs/Widgets/ctkWorkflowWidget.cpp

@@ -70,6 +70,18 @@ ctkWorkflowWidgetPrivate::ctkWorkflowWidgetPrivate()
 //---------------------------------------------------------------------------
 ctkWorkflowWidgetPrivate::~ctkWorkflowWidgetPrivate()
 {
+  if (this->Workflow)
+    {
+    foreach(ctkWorkflowStep* step, this->Workflow->steps())
+      {
+      ctkWorkflowWidgetStep * widgetStep = dynamic_cast<ctkWorkflowWidgetStep*>(step);
+      if (widgetStep)
+        {
+        widgetStep->setVisible(false);
+        widgetStep->setParent(0);
+        }
+      }
+    }
 }
 
 // --------------------------------------------------------------------------