Salome HOME
Issue #1112 tab key doesn't work on the last field of left panels
[modules/shaper.git] / src / GeomAlgoAPI / GeomAlgoAPI_MakeShapeList.cpp
index 71ed1594745a4cda3130287f39d806d2106e1621..1442c5b324204398f776174c4e77fb6a022258a2 100644 (file)
@@ -4,12 +4,10 @@
 // Created:     27 May 2015
 // Author:      Dmitry Bobylev
 
-#include <GeomAlgoAPI_MakeShapeList.h>
+#include "GeomAlgoAPI_MakeShapeList.h"
 
-#include <BRepBuilderAPI_MakeShape.hxx>
 #include <NCollection_Map.hxx>
-#include <TopTools_ListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopoDS_Shape.hxx>
 
 //=================================================================================================
 GeomAlgoAPI_MakeShapeList::GeomAlgoAPI_MakeShapeList()
@@ -30,42 +28,35 @@ void GeomAlgoAPI_MakeShapeList::init(const ListOfMakeShape& theMakeShapeList)
 }
 
 //=================================================================================================
-void GeomAlgoAPI_MakeShapeList::append(const std::shared_ptr<GeomAlgoAPI_MakeShape> theMakeShape)
+void GeomAlgoAPI_MakeShapeList::appendAlgo(const std::shared_ptr<GeomAlgoAPI_MakeShape> theMakeShape)
 {
   myListOfMakeShape.push_back(theMakeShape);
 }
 
-//=================================================================================================
-void GeomAlgoAPI_MakeShapeList::append(const GeomAlgoAPI_MakeShapeList& theMakeShapeList)
-{
-  for(ListOfMakeShape::const_iterator anIt = theMakeShapeList.myListOfMakeShape.cbegin();
-    anIt != theMakeShapeList.myListOfMakeShape.cend(); anIt++) {
-    myListOfMakeShape.push_back(*anIt);
-  }
-}
-
 //=================================================================================================
 const std::shared_ptr<GeomAPI_Shape> GeomAlgoAPI_MakeShapeList::shape() const
 {
-  if(myListOfMakeShape.empty()) {
-    return std::shared_ptr<GeomAPI_Shape>();
-  } else {
+  std::shared_ptr<GeomAPI_Shape> aShape = GeomAlgoAPI_MakeShape::shape();
+  if(aShape.get() && !aShape->impl<TopoDS_Shape>().IsNull()) {
+    return aShape;
+  } else if(!myListOfMakeShape.empty()) {
     return myListOfMakeShape.back()->shape();
   }
+  return std::shared_ptr<GeomAPI_Shape>();
 }
 
 //=================================================================================================
 void GeomAlgoAPI_MakeShapeList::generated(const std::shared_ptr<GeomAPI_Shape> theShape,
                                           ListOfShape& theHistory)
 {
-  result(theShape, theHistory, GeomAlgoAPI_MakeShapeList::Generated);
+  result(theShape,  GeomAlgoAPI_MakeShapeList::Generated, theHistory);
 }
 
 //=================================================================================================
 void GeomAlgoAPI_MakeShapeList::modified(const std::shared_ptr<GeomAPI_Shape> theShape,
                                          ListOfShape& theHistory)
 {
-  result(theShape, theHistory, GeomAlgoAPI_MakeShapeList::Modified);
+  result(theShape, GeomAlgoAPI_MakeShapeList::Modified, theHistory);
 }
 
 bool GeomAlgoAPI_MakeShapeList::isDeleted(const std::shared_ptr<GeomAPI_Shape> theShape)
@@ -81,8 +72,8 @@ bool GeomAlgoAPI_MakeShapeList::isDeleted(const std::shared_ptr<GeomAPI_Shape> t
 }
 
 void GeomAlgoAPI_MakeShapeList::result(const std::shared_ptr<GeomAPI_Shape> theShape,
-                                       ListOfShape& theHistory,
-                                       OperationType theOperationType)
+                                       OperationType theOperationType,
+                                       ListOfShape& theHistory)
 {
   if(myListOfMakeShape.empty()) {
     return;
@@ -101,7 +92,6 @@ void GeomAlgoAPI_MakeShapeList::result(const std::shared_ptr<GeomAPI_Shape> theS
       std::shared_ptr<GeomAPI_Shape> aShape(new GeomAPI_Shape);
       aShape->setImpl(new TopoDS_Shape(aShapeIt.Value()));
       ListOfShape aGeneratedShapes;
-      const TopoDS_Shape& aSh = aShape->impl<TopoDS_Shape>();
       aMakeShape->generated(aShape, aGeneratedShapes);
       for(ListOfShape::const_iterator anIt = aGeneratedShapes.cbegin(); anIt != aGeneratedShapes.cend(); anIt++) {
         aTempShapes.Add((*anIt)->impl<TopoDS_Shape>());