0027957: Visualization, AIS_InteractiveContext - protect from displaying the same...
[occt.git] / src / AIS / AIS_MultipleConnectedInteractive.cxx
index 69de42e..47b4303 100644 (file)
@@ -259,17 +259,13 @@ void AIS_MultipleConnectedInteractive::Compute (const Handle(PrsMgr_Presentation
                                                 const Handle(Prs3d_Presentation)&           /*thePrs*/,
                                                 const Standard_Integer                      /*theMode*/)
 {
+  Handle(AIS_InteractiveContext) aCtx = GetContext();
   for (PrsMgr_ListOfPresentableObjectsIter anIter (Children()); anIter.More(); anIter.Next())
   {
     Handle(AIS_InteractiveObject) aChild = Handle(AIS_InteractiveObject)::DownCast (anIter.Value());
-    if (aChild.IsNull())
-    {
-      continue;
-    }
-
-    if (!aChild->HasInteractiveContext())
+    if (!aChild.IsNull())
     {
-      aChild->SetContext (GetContext());
+      aChild->SetContext (aCtx);
     }
   }
 }
@@ -374,3 +370,20 @@ Standard_Boolean AIS_MultipleConnectedInteractive::HasSelection (const Standard_
 
   return Standard_True;
 }
+
+//=======================================================================
+//function : SetContext
+//purpose  :
+//=======================================================================
+void AIS_MultipleConnectedInteractive::SetContext (const Handle(AIS_InteractiveContext)& theCtx)
+{
+  AIS_InteractiveObject::SetContext (theCtx);
+  for (PrsMgr_ListOfPresentableObjectsIter anIter (Children()); anIter.More(); anIter.Next())
+  {
+    Handle(AIS_InteractiveObject) aChild = Handle(AIS_InteractiveObject)::DownCast (anIter.Value());
+    if (!aChild.IsNull())
+    {
+      aChild->SetContext (theCtx);
+    }
+  }
+}