X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Selection.cpp;h=a8cd9cc3b35e678388857a52ee9eafbbada053ef;hb=64fc7e4fdd63997ec7a502b233ef5f88186d5bbb;hp=8a14e7d1800510dc8e497c2b9c561edb9735d03f;hpb=a94eeab620f6c2a559f5fea9b7d638423d010e62;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Selection.cpp b/src/XGUI/XGUI_Selection.cpp index 8a14e7d18..a8cd9cc3b 100644 --- a/src/XGUI/XGUI_Selection.cpp +++ b/src/XGUI/XGUI_Selection.cpp @@ -43,6 +43,24 @@ QList XGUI_Selection::getSelected(const SelectionPlace& th return aPresentations; } +Handle(AIS_InteractiveObject) XGUI_Selection::getIO(const ModuleBase_ViewerPrs& thePrs) +{ + Handle(AIS_InteractiveObject) anIO = thePrs.interactive(); + if (anIO.IsNull()) { + Handle(SelectMgr_EntityOwner) anOwner = thePrs.owner(); + if (!anOwner.IsNull()) + anIO = Handle(AIS_InteractiveObject)::DownCast(anOwner->Selectable()); + + if (anIO.IsNull() && thePrs.object()) { + XGUI_Displayer* aDisplayer = myWorkshop->displayer(); + AISObjectPtr anAISObject = aDisplayer->getAISObject(thePrs.object()); + if (anAISObject.get()) + anIO = anAISObject->impl(); + } + } + return anIO; +} + void XGUI_Selection::getSelectedInViewer(QList& thePresentations) const { Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext(); @@ -99,7 +117,7 @@ void XGUI_Selection::fillPresentation(ModuleBase_ViewerPrs& thePrs, // we should not check the appearance of this feature because there can be some selected shapes // for one feature Handle(StdSelect_BRepOwner) aBRO = Handle(StdSelect_BRepOwner)::DownCast(theOwner); - if( !aBRO.IsNull() ) { + if( !aBRO.IsNull() && aBRO->HasShape() ) { // the located method is called in the context to obtain the shape by the SelectedShape() method, // so the shape is located by the same rules TopoDS_Shape aShape = aBRO->Shape().Located (aBRO->Location() * aBRO->Shape().Location()); @@ -147,6 +165,11 @@ QObjectPtrList XGUI_Selection::selectedObjects() const return myWorkshop->objectBrowser()->selectedObjects(); } +void XGUI_Selection::setSelectedObjects( const QObjectPtrList& theObjects ) const +{ + return myWorkshop->objectBrowser()->setObjectsSelected( theObjects ); +} + QObjectPtrList XGUI_Selection::selectedPresentations() const { QObjectPtrList aSelectedList;