Salome HOME
The order of deletion of Ports (during the deletion of nodes) was wrong.
authorrahuel <rahuel@opencascade.com>
Wed, 7 Sep 2005 07:06:27 +0000 (07:06 +0000)
committerrahuel <rahuel@opencascade.com>
Wed, 7 Sep 2005 07:06:27 +0000 (07:06 +0000)
If a Node/Graph is renamed the graph must be "validated" again.

src/Supervision/CNode_Impl.cxx

index b75fb592c9fbab2096a8b954977f650a39ef7464..65d5ee1b8e6ed2544f94a2a861b7c38bd7989cde 100644 (file)
@@ -208,13 +208,17 @@ void CNode_Impl::DeletePorts() {
   beginService( "CNode_Impl::DeletePorts" );
   if ( DataFlowEditor()->IsEditing() && DataFlowNode() ) {
     int i ;
-    for ( i = 0 ; i < DataFlowNode()->ComputingNode()->GetNodeInPortsSize() ; i++ ) {
+//JR Debug 06.09.2005 : Ports must be explored in the reversed side because deletion
+//                      of a port changes indexes !!!...
+//    for ( i = 0 ; i < DataFlowNode()->ComputingNode()->GetNodeInPortsSize() ; i++ ) {
+    for ( i = DataFlowNode()->ComputingNode()->GetNodeInPortsSize()-1 ; i >= 0 ; i-- ) {
       SUPERV::Port_var aPort = DataFlowNode()->ComputingNode()->GetChangeNodeInPort( i )->ObjRef() ;
       if ( !CORBA::is_nil( aPort ) ) {
         aPort->Remove() ;
       }
     }
-    for ( i = 0 ; i < DataFlowNode()->ComputingNode()->GetNodeOutPortsSize() ; i++ ) {
+//    for ( i = 0 ; i < DataFlowNode()->ComputingNode()->GetNodeOutPortsSize() ; i++ ) {
+    for ( i = DataFlowNode()->ComputingNode()->GetNodeOutPortsSize()-1 ; i >= 0 ; i-- ) {
       SUPERV::Port_var aPort = DataFlowNode()->ComputingNode()->GetChangeNodeOutPort( i )->ObjRef() ;
       if ( !CORBA::is_nil( aPort ) ) {
         aPort->Remove() ;
@@ -252,18 +256,30 @@ char * CNode_Impl::Name() {
 bool CNode_Impl::SetName( const char * aDataFlowName ) {
 //  beginService( "CNode_Impl::SetName" );
   bool RetVal = false ;
+  bool SameName ;
   if ( DataFlowEditor()->IsEditing() ) {
     if ( _IsNode ) {
 //JR 29.06.2005 debug :
       char * OldNodeName = my_strdup( DataFlowNode()->Name() ) ;
 //      RetVal = DataFlowEditor()->ReNameNode( DataFlowNode()->Name() ,
-      RetVal = DataFlowEditor()->ReNameNode( OldNodeName ,
-                                             aDataFlowName ) ;
+      SameName = !strcmp( OldNodeName , aDataFlowName ) ;
+      if ( !SameName ) {
+        RetVal = DataFlowEditor()->ReNameNode( OldNodeName ,
+                                               aDataFlowName ) ;
+      }
       delete [] OldNodeName ;
     }
     else {
 //      RetVal = DataFlowEditor()->Graph()->Name( aDataFlowName ) ;
-      RetVal = DataFlowEditor()->Name( aDataFlowName ) ;
+      SameName = !strcmp( DataFlowEditor()->Graph()->Name() , aDataFlowName ) ;
+      if ( !SameName ) {
+        RetVal = DataFlowEditor()->Name( aDataFlowName ) ;
+      }
+    }
+//JR Debug 06.09.2005 : UnValid was missing
+    if ( !SameName ) {
+      DataFlowEditor()->UnValid() ;
+      DataFlowEditor()->IsValid() ;
     }
   }
 //  endService( "CNode_Impl::SetName" );