Salome HOME
Merge branch 'Dev_1.2.0' of newgeom:newgeom into Dev_1.2.0
[modules/shaper.git] / src / PartSet / PartSet_PartDataModel.cpp
index 1ad039559bc62c4dbb2b65b00f71acfd027d6641..402244d852d7bda4b1d6c94dc3f930557a5d3fc8 100644 (file)
@@ -472,7 +472,9 @@ DocumentPtr PartSet_PartDataModel::partDocument() const
   ObjectPtr aObject = aRootDoc->object(ModelAPI_Feature::group(), myId);
   FeaturePtr aFeature = ModelAPI_Feature::feature(aObject);
   ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aFeature->firstResult()); 
-  return aPart->partDoc();
+  if (aPart.get()) // this may be null is Part feature is disabled
+    return aPart->partDoc();
+  return DocumentPtr();
 }
 
 ObjectPtr PartSet_PartDataModel::object(const QModelIndex& theIndex) const
@@ -573,7 +575,7 @@ int PartSet_PartDataModel::getRowsNumber() const
 int PartSet_PartDataModel::lastHistoryRow() const
 {
   DocumentPtr aDoc = partDocument();
-  FeaturePtr aFeature = aDoc->currentFeature();
+  FeaturePtr aFeature = aDoc->currentFeature(true);
   if (aFeature.get())
     return getRowsNumber() + aDoc->index(aFeature);
   else
@@ -588,11 +590,11 @@ void PartSet_PartDataModel::setLastHistoryItem(const QModelIndex& theIndex)
   if (theIndex.internalId() == HistoryObject) {
     ObjectPtr aObject = object(theIndex);
     aMgr->startOperation(aOpName);
-    aDoc->setCurrentFeature(std::dynamic_pointer_cast<ModelAPI_Feature>(aObject));
+    aDoc->setCurrentFeature(std::dynamic_pointer_cast<ModelAPI_Feature>(aObject), true);
     aMgr->finishOperation();
   } else {
     aMgr->startOperation(aOpName);
-    aDoc->setCurrentFeature(FeaturePtr());
+    aDoc->setCurrentFeature(FeaturePtr(), true);
     aMgr->finishOperation();
   }
 }