瀏覽代碼

Merge branch 'simplify-workflow-memory-management'

* simplify-workflow-memory-management:
  Delegates memory management of all steps to ctkWorkflow
Jean-Christophe Fillion-Robin 13 年之前
父節點
當前提交
33d1d51583
共有 2 個文件被更改,包括 13 次插入6 次删除
  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);
+        }
+      }
+    }
 }
 
 // --------------------------------------------------------------------------