DocumentPtr PartSet_PartDataModel::partDocument() const
{
- DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
- 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();
+ ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(myPart->firstResult());
+ 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
return QModelIndex();
}
-ResultPartPtr PartSet_PartDataModel::part() const
-{
- DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
- ObjectPtr aObj = aRootDoc->object(ModelAPI_ResultPart::group(), myId);
- return std::dynamic_pointer_cast<ModelAPI_ResultPart>(aObj);
-}
-
QModelIndex PartSet_PartDataModel::objectIndex(const ObjectPtr& theObject) const
{
QModelIndex aIndex;
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
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();
}
}