Salome HOME
A fix for a refs #266 - Point insertion in a polyline with type spline
[modules/hydro.git] / src / HYDROCurveCreator / CurveCreator_Widget.cxx
index e997fe69fe3fc1e9bab18fbe1ee083c040a3e9c2..5880c724cfd95d825ec0d82840614a76c23b6acc 100644 (file)
@@ -669,13 +669,22 @@ void CurveCreator_Widget::onJoin()
   for( int i = 0; i < aSections.size() ; i++ ){
     aSectionsToJoin.push_back( aSections[i] );
   }
-
+  //int aMainSect = aSectionsToJoin.front();
+  //int aMainSectSize = myCurve->getNbPoints(aMainSect);
   if ( myCurve->join( aSectionsToJoin ) )
   {
-    for( int i = 0, aSectionsSize = aSectionsToJoin.size(); i < aSectionsSize; i++ )
-      mySectionView->sectionsRemoved( i );
+    std::list<int>::const_iterator anIt = aSectionsToJoin.begin(),
+                                   aLast = aSectionsToJoin.end();
+    // the first section should be skipped. It is not removed, but is modified
+    anIt++;
+    for ( ; anIt != aLast; anIt++ )
+      mySectionView->sectionsRemoved( *anIt );
   }
 
+  /* The update for the points of the main section
+  int aNewSectSize = myCurve->getNbPoints(aMainSect);
+  if( aNewSectSize != aMainSectSize )
+    mySectionView->pointsAdded( aMainSect, aMainSectSize, aNewSectSize-aMainSectSize );*/
   updateUndoRedo();
 }
 
@@ -1155,6 +1164,7 @@ void CurveCreator_Widget::addNewPoint(const CurveCreator::Coordinates& theCoords
   }
   int aSection = aSections[0];
   myCurve->addPoints(theCoords, aSection); // add to the end of section
+  mySectionView->pointsAdded( aSection, myCurve->getNbPoints( aSection ) );
   updateActionsStates();
   updateUndoRedo();
 }
@@ -1193,6 +1203,7 @@ void CurveCreator_Widget::insertPointToSelectedSegment( const int theX,
   CurveCreator_ICurve::SectionToPointList::const_iterator anIt = aPoints1.begin(),
                                                           aLast = aPoints1.end();
   int aSectionId = -1;
+  // find the indices of the neighbour point
   // there can be a case when a new point is added into two sections
   int aPoint1Id = -1, aPoint2Id = -1;
   for ( ; anIt != aLast && aSectionId < 0; anIt++ ) {
@@ -1217,6 +1228,7 @@ void CurveCreator_Widget::insertPointToSelectedSegment( const int theX,
     anInsertPos = aPoint1Id < aPoint2Id ? aPoint1Id + 1 : aPoint2Id + 1;
 
   myCurve->addPoints( aCoords, aSectionId, anInsertPos );
+  mySectionView->pointsAdded( aSectionId, myCurve->getNbPoints( aSectionId ) );
 
   finishCurveModification( aSelPoints );