Salome HOME
Memory Leaks
[modules/superv.git] / src / SUPERVGUI / SUPERVGUI_Canvas.cxx
index fb1f77cf38661bbe4f61fd2b0308a312182f5143..58d6e2ad8f92d53e5bdb3323f7db06684accaa7e 100644 (file)
@@ -98,13 +98,18 @@ SUPERVGUI_Canvas::SUPERVGUI_Canvas(SUPERVGUI_Main* m):
 
 
 SUPERVGUI_Canvas::~SUPERVGUI_Canvas() {
+  // asv : 17.01.05 : why delete its own children (CanvasNode-s)?
+  // they must be destroyed automatically.
   QObjectList* aNodeList = queryList("SUPERVGUI_CanvasNode");
   QObjectListIt aIt(*aNodeList);
   QObject* anObj;
-  while ((anObj = aIt.current()) != 0) {
+  while ( (anObj = aIt.current()) != 0 ) {
     ++aIt;
+    aNodeList->removeRef(anObj);
     delete anObj;
   }
+  // asv : list returned by queryList() must be removed
+  delete aNodeList;
 }
 
 void SUPERVGUI_Canvas::addView(QCanvasView* theView)
@@ -157,7 +162,6 @@ void SUPERVGUI_Canvas::updateLinks()
 }
 
 void SUPERVGUI_Canvas::sync() {
-  //  MESSAGE("===> SUPERVGUI_Canvas::sync()");
   if (SUPERV_isNull(myMain->getDataflow())) return;
       
   SUPERVGUI_CanvasNode* ihmNode;
@@ -174,7 +178,6 @@ void SUPERVGUI_Canvas::sync() {
  * Synchronizes Graph presentation with internal graph structure
  */
 void SUPERVGUI_Canvas::merge() {
-  //  MESSAGE("===> SUPERVGUI_Canvas::merge()");
   if (SUPERV_isNull(myMain->getDataflow())) return;
       
   SUPERVGUI_CanvasNode* ihmNode;
@@ -272,23 +275,6 @@ void SUPERVGUI_Canvas::merge() {
   delete ihmList;
 }
 
-void SUPERVGUI_Canvas::setAsFromStudy(bool theToStudy)
-{
-  if (theToStudy) return;
-  
-  SUPERVGUI_CanvasPortOut* aPortOut;
-  QObjectList* aPortList = queryList("SUPERVGUI_CanvasPortOut");
-  QObjectListIt aPortIt(*aPortList);
-  while ((aPortOut=(SUPERVGUI_CanvasPortOut*)aPortIt.current()) != 0) {
-    ++aPortIt;
-    if (aPortOut->isInStudy()) {
-      aPortOut->setStudyState(theToStudy);
-      aPortOut->sync();
-    }
-  }
-  delete aPortList;
-}
-
 SUPERVGUI_CanvasNode* SUPERVGUI_Canvas::getNode(SUPERV::CNode_ptr theNode) const
 {
   return (SUPERVGUI_CanvasNode*)