X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Sketch.cpp;h=a63344e58fda66b21299919bd574339b87b9fcad;hb=c7a5ff20294ae8270bfb9120b8887f0c9959d658;hp=2a5dd0944780f0c7e21decd6617dd180b335de41;hpb=3f640830ca622fb7fbf78d15efbd289be834f895;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Sketch.cpp b/src/SketchPlugin/SketchPlugin_Sketch.cpp index 2a5dd0944..a63344e58 100644 --- a/src/SketchPlugin/SketchPlugin_Sketch.cpp +++ b/src/SketchPlugin/SketchPlugin_Sketch.cpp @@ -9,12 +9,9 @@ #include #include -#include #include #include -#include - #include #include @@ -148,9 +145,15 @@ void SketchPlugin_Sketch::removeFeature(std::shared_ptr theFea { if (!data()->isValid()) // sketch is already removed (case on undo of sketch), sync is not needed return; - // to keep the persistent sub-elements indexing, do not remove elements from list, - // but substitute by nulls - reflist(SketchPlugin_Sketch::FEATURES_ID())->substitute(theFeature, ObjectPtr()); + AttributeRefListPtr aList = reflist(SketchPlugin_Sketch::FEATURES_ID()); + // if the object is last, remove it from the list (needed to skip empty transaction on edit of sketch feature) + if (aList->object(aList->size(true) - 1, true) == theFeature) { + aList->remove(theFeature); + } else { + // to keep the persistent sub-elements indexing, do not remove elements from list, + // but substitute by nulls + aList->substitute(theFeature, ObjectPtr()); + } } int SketchPlugin_Sketch::numberOfSubs(bool forTree) const @@ -304,7 +307,7 @@ FeaturePtr SketchPlugin_Sketch::addUniqueNamedCopiedFeature(FeaturePtr theFeatur // as a name for the feature, the generated unique name is set aNewFeature->data()->setName(aUniqueFeatureName); // text expressions could block setValue of some attributes - clearExpressions(aNewFeature); + SketchPlugin_Tools::clearExpressions(aNewFeature); return aNewFeature; } @@ -322,3 +325,9 @@ std::shared_ptr SketchPlugin_Sketch::plane(SketchPlugin_Sketch* the return std::shared_ptr(new GeomAPI_Ax3(anOrigin->pnt(), aDirX->dir(), aNorm->dir())); } + +void SketchPlugin_Sketch::exchangeIDs( + std::shared_ptr theFeature1, std::shared_ptr theFeature2) +{ + reflist(SketchPlugin_Sketch::FEATURES_ID())->exchange(theFeature1, theFeature2); +}