X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_DataModel.cpp;h=344b4bfc3db37a3ae58d7686fc1c2129a6c68472;hb=d9359acfaf1fa39e052d117c30af8a28e117b78d;hp=1d422355b6e4f9ac8844a9bd7f5c3707c715ac5d;hpb=816672e21b195db53d6f8a2e9914bfc400cd49de;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_DataModel.cpp b/src/XGUI/XGUI_DataModel.cpp index 1d422355b..344b4bfc3 100644 --- a/src/XGUI/XGUI_DataModel.cpp +++ b/src/XGUI/XGUI_DataModel.cpp @@ -37,7 +37,10 @@ ResultPartPtr getPartResult(ModelAPI_Object* theObj) if (aFeature) { ResultPtr aRes = aFeature->firstResult(); if (aRes.get() && (aRes->groupName() == ModelAPI_ResultPart::group())) { - return std::dynamic_pointer_cast(aRes); + ResultPartPtr aPartRes = std::dynamic_pointer_cast(aRes); + // Use only original parts, not a placement results + if (aPartRes == aPartRes->original()) + return aPartRes; } } return ResultPartPtr(); @@ -641,12 +644,32 @@ Qt::ItemFlags XGUI_DataModel::flags(const QModelIndex& theIndex) const aObj = (ModelAPI_Object*) theIndex.internalPointer(); } if (aObj) { - aFlags |= Qt::ItemIsEditable; - - if (!aObj->isDisabled()) - aFlags |= Qt::ItemIsEnabled; - } else - aFlags |= Qt::ItemIsEnabled; + if (aObj->isDisabled()) + return Qt::ItemFlags(); + + bool isCompositeSub = false; + if (theIndex.column() == 1) { + ObjectPtr aObjPtr = aObj->data()->owner(); + FeaturePtr aFeature = std::dynamic_pointer_cast(aObjPtr); + if (aFeature.get()) { + CompositeFeaturePtr aCompFea = ModelAPI_Tools::compositeOwner(aFeature); + if (aCompFea.get()) + isCompositeSub = true; + } else { + ResultPtr aResult = std::dynamic_pointer_cast(aObjPtr); + if (aResult.get()) { + ResultCompSolidPtr aCompRes = ModelAPI_Tools::compSolidOwner(aResult); + if (aCompRes.get()) + isCompositeSub = true; + } + } + } + // An object which is sub-object of a composite object can not be accessible in column 1 + if (isCompositeSub) + return Qt::ItemFlags(); + } + + aFlags |= Qt::ItemIsEnabled; return aFlags; }