+ // Synchronize displayed objects
+ Handle(AIS_InteractiveContext) aContext;
+ if (mySelector && mySelector->viewer())
+ aContext = mySelector->viewer()->getAISContext();
+
+ if (!aContext.IsNull()) {
+ XGUI_Displayer* aDisp = myWorkshop->displayer();
+ QObjectPtrList aObjList = aDisp->displayedObjects();
+
+ AIS_ListOfInteractive aList;
+ aContext->DisplayedObjects(aList);
+ AIS_ListIteratorOfListOfInteractive aLIt;
+ Handle(AIS_InteractiveObject) anAISIO;
+ foreach (ObjectPtr aObj, aObjList) {
+ AISObjectPtr aPrs = aDisp->getAISObject(aObj);
+ Handle(AIS_InteractiveObject) aAIS = aPrs->impl<Handle(AIS_InteractiveObject)>();
+ bool aFound = false;
+ for (aLIt.Initialize(aList); aLIt.More(); aLIt.Next()) {
+ anAISIO = aLIt.Value();
+ if (anAISIO.Access() == aAIS.Access()) {
+ aFound = true;
+ break;
+ }
+ }
+ if (!aFound) {
+ aObj->setDisplayed(false);
+ //aDisp->erase(aObj, false);
+ }
+ }
+ Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY));
+ }
+ myProxyViewer->activateViewer(true);