1 // File: ModuleBase_ViewerFilters.cpp
2 // Created: 07 Okt 2014
3 // Author: Vitaly SMETANNIKOV
6 #include "ModuleBase_ViewerFilters.h"
7 #include "ModuleBase_IWorkshop.h"
9 #include <ModelAPI_Session.h>
10 #include <ModelAPI_Document.h>
12 #include <AIS_InteractiveObject.hxx>
14 IMPLEMENT_STANDARD_HANDLE(ModuleBase_ShapeDocumentFilter, SelectMgr_Filter);
15 IMPLEMENT_STANDARD_RTTIEXT(ModuleBase_ShapeDocumentFilter, SelectMgr_Filter);
18 //TODO (VSV): Check bug in OCCT: Filter result is ignored (bug25340)
19 Standard_Boolean ModuleBase_ShapeDocumentFilter::IsOk(const Handle(SelectMgr_EntityOwner)& theOwner) const
21 if (theOwner->HasSelectable()) {
22 Handle(AIS_InteractiveObject) aAisObj =
23 Handle(AIS_InteractiveObject)::DownCast(theOwner->Selectable());
24 if (!aAisObj.IsNull()) {
25 boost::shared_ptr<GeomAPI_AISObject> aAISObj = AISObjectPtr(new GeomAPI_AISObject());
26 aAISObj->setImpl(new Handle(AIS_InteractiveObject)(aAisObj));
27 ObjectPtr aObj = myWorkshop->findPresentedObject(aAISObj);
29 DocumentPtr aDoc = aObj->document();
30 SessionPtr aMgr = ModelAPI_Session::get();
31 return (aDoc == aMgr->activeDocument()) || (aDoc == aMgr->moduleDocument());
35 return Standard_False;