- ModuleBase_ViewerPrsPtr aPrs(new ModuleBase_ViewerPrs());
- Handle(AIS_InteractiveObject) anIO = aContext->DetectedInteractive();
- if (aSelectedIds.contains((long)anIO.Access()))
- continue;
-
- aSelectedIds.append((long)anIO.Access());
- aPrs->setInteractive(anIO);
-
- ObjectPtr aResult = aDisplayer->getObject(anIO);
- // we should not check the appearance of this feature because there can be some selected shapes
- // for one feature
- aPrs->setObject(aResult);
- if (aContext->HasOpenedContext()) {
- TopoDS_Shape aShape = aContext->DetectedShape();
- if (!aShape.IsNull()) {
- std::shared_ptr<GeomAPI_Shape> aGeomShape = std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape());
- aGeomShape->setImpl(new TopoDS_Shape(aShape));
- aPrs->setShape(aGeomShape);
- }
+ Handle(SelectMgr_EntityOwner) anOwner = aContext->DetectedOwner();
+ if (!anOwner.IsNull()) {
+ if (aSelectedIds.contains((long)anOwner.get()))
+ continue;
+ aSelectedIds.append((long)anOwner.get());
+
+ ModuleBase_ViewerPrsPtr aPrs(new ModuleBase_ViewerPrs());
+ fillPresentation(aPrs, anOwner);
+ aPresentations.push_back(aPrs);