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();
}
if ( theEvent->button() != Qt::LeftButton )
return;
+ myPressedX = theEvent->x();
+ myPressedY = theEvent->y();
+
switch( getActionMode() ) {
case ModificationMode: {
//store initial cursor position for Drag&Drop
}
}
else // check whether the segment is clicked an a new point should be added to the segment
- insertPointToSelectedSegment( theEvent->pos().x(), theEvent->pos().y() );
+ {
+ int aReleasedX = theEvent->x();
+ int aReleasedY = theEvent->y();
+ if ( myPressedX == aReleasedX && myPressedY == aReleasedY )
+ insertPointToSelectedSegment( aReleasedX, aReleasedY );
+ }
// updates the input panel table to show the selected point coordinates
updateLocalPointView();
+ updateUndoRedo();
}
/**
}
int aSection = aSections[0];
myCurve->addPoints(theCoords, aSection); // add to the end of section
+ mySectionView->pointsAdded( aSection, myCurve->getNbPoints( aSection ) );
updateActionsStates();
updateUndoRedo();
}
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++ ) {
anInsertPos = aPoint1Id < aPoint2Id ? aPoint1Id + 1 : aPoint2Id + 1;
myCurve->addPoints( aCoords, aSectionId, anInsertPos );
+ mySectionView->pointsAdded( aSectionId, myCurve->getNbPoints( aSectionId ) );
finishCurveModification( aSelPoints );