X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_Filters.cpp;h=31f1872c778acce3053fce118629971a8dbbdcb2;hb=857b1f72d9703c46c6c8c9bb239821d314344c86;hp=d82447430e3757d240e7dacbef36fce48ec17ca5;hpb=1181dff91b7a5673d8238a3be0e2ef9ec441aab3;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_Filters.cpp b/src/PartSet/PartSet_Filters.cpp index d82447430..31f1872c7 100644 --- a/src/PartSet/PartSet_Filters.cpp +++ b/src/PartSet/PartSet_Filters.cpp @@ -10,6 +10,8 @@ #include "ModuleBase_IModule.h" #include +#include +#include #include #include @@ -38,11 +40,20 @@ Standard_Boolean PartSet_GlobalFilter::IsOk(const Handle(SelectMgr_EntityOwner)& } ObjectPtr aObj = myWorkshop->findPresentedObject(aAISObj); if (aObj) { - FeaturePtr aFeature = ModelAPI_Feature::feature(aObj); - if (aFeature) { - aValid = aFeature->getKind() != FeaturesPlugin_Group::ID(); - } else - aValid = Standard_True; + ResultPtr aResult = std::dynamic_pointer_cast(aObj); + // result of parts belongs to PartSet document and can be selected only when PartSet is active + // in order to do not select the result of the active part. + if (aResult.get() && aResult->groupName() == ModelAPI_ResultPart::group()) { + SessionPtr aMgr = ModelAPI_Session::get(); + aValid = aMgr->activeDocument() == aMgr->moduleDocument(); + } + else { + FeaturePtr aFeature = ModelAPI_Feature::feature(aObj); + if (aFeature) { + aValid = aFeature->getKind() != FeaturesPlugin_Group::ID(); + } else + aValid = Standard_True; + } } else // This is not object controlled by the filter aValid = Standard_True;