0025661: Visualization - AIS_InteractiveContext::Load() is not symmetric to the local...
authorsan <san@opencascade.com>
Thu, 25 Dec 2014 16:09:57 +0000 (19:09 +0300)
committerabv <abv@opencascade.com>
Thu, 15 Jan 2015 15:33:37 +0000 (18:33 +0300)
Register theIObj in the selection manager to prepare further activation of selection

src/AIS/AIS_InteractiveContext.cxx

index 1442529..b8cb1cb 100644 (file)
@@ -471,13 +471,21 @@ void AIS_InteractiveContext::Load (const Handle(AIS_InteractiveObject)& theIObj,
   }
 
   if (theSelMode == -1
-  && !theToAllowDecomposition
-  && !myObjects.IsBound (theIObj))
+  && !theToAllowDecomposition)
   {
-    Standard_Integer aDispMode, aHiMod, aSelModeDef;
-    GetDefModes (theIObj, aDispMode, aHiMod, aSelModeDef);
-    Handle(AIS_GlobalStatus) aStatus = new AIS_GlobalStatus (AIS_DS_Erased, aDispMode, aSelModeDef);
-    myObjects.Bind (theIObj, aStatus);
+    if (!myObjects.IsBound (theIObj))
+    {
+      Standard_Integer aDispMode, aHiMod, aSelModeDef;
+      GetDefModes (theIObj, aDispMode, aHiMod, aSelModeDef);
+      Handle(AIS_GlobalStatus) aStatus = new AIS_GlobalStatus (AIS_DS_Erased, aDispMode, aSelModeDef);
+      myObjects.Bind (theIObj, aStatus);
+    }
+
+    // Register theIObj in the selection manager to prepare further activation of selection
+    if (!mgrSelector->Contains (theIObj))
+    {
+      mgrSelector->Load (theIObj);
+    }
   }
 }