0028888: Visualization - AIS_InteractiveContext should not hold V3d_View handle which...
authorkgv <kgv@opencascade.com>
Tue, 4 Jul 2017 11:15:34 +0000 (14:15 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 6 Jul 2017 09:42:02 +0000 (12:42 +0300)
src/AIS/AIS_InteractiveContext.hxx
src/AIS/AIS_InteractiveContext_1.cxx
src/AIS/AIS_InteractiveContext_2.cxx
src/AIS/AIS_LocalContext.hxx
src/AIS/AIS_LocalContext_1.cxx

index d9b070a..59b0524 100644 (file)
@@ -1863,7 +1863,6 @@ protected:
   Handle(Prs3d_Drawer) myStyles[Prs3d_TypeOfHighlight_NB];
   AIS_DataMapOfILC myLocalContexts;
   Standard_Integer myCurLocalIndex;
-  Handle(V3d_View) mylastmoveview;
   TColStd_SequenceOfInteger myDetectedSeq;
   Standard_Integer myCurDetected;
   Standard_Integer myCurHighlighted;
index 7788087..e83a397 100644 (file)
@@ -422,7 +422,6 @@ AIS_StatusOfDetection AIS_InteractiveContext::MoveTo (const Standard_Integer  th
     theView->Viewer()->Update();
   }
 
-  mylastmoveview = theView;
   return aStatus;
 }
 
index 48334f4..b62d0a5 100644 (file)
@@ -60,12 +60,12 @@ OpenLocalContext(const Standard_Boolean UseDisplayedObjects,
       const Handle(AIS_InteractiveObject) aLastPickedAIS = Handle(AIS_InteractiveObject)::DownCast (myLastPicked->Selectable());
       unhighlightGlobal (aLastPickedAIS);
     }}
-  
-  if(!mylastmoveview.IsNull()){
-    if(myCurLocalIndex>0)
-      myLocalContexts(myCurLocalIndex)->UnhilightLastDetected(mylastmoveview);
+
+  if (myCurLocalIndex > 0)
+  {
+    myLocalContexts (myCurLocalIndex)->UnhilightLastDetected (myMainVwr);
   }
-  
+
   // entities connected to dynamic selection at neutral point are set to 0.
   
   myLastinMain.Nullify();
index 90e6ec6..3b2a796 100644 (file)
@@ -164,7 +164,10 @@ public:
   Standard_EXPORT Standard_Integer HilightPreviousDetected (const Handle(V3d_View)& theView, const Standard_Boolean theToRedrawImmediate);
   
   //! returns True if something was done...
-  Standard_EXPORT Standard_Boolean UnhilightLastDetected (const Handle(V3d_View)& aView);
+  Standard_EXPORT Standard_Boolean UnhilightLastDetected (const Handle(V3d_Viewer)& theViewer);
+
+  //! returns True if something was done...
+  Standard_EXPORT Standard_Boolean UnhilightLastDetected (const Handle(V3d_View)& theView);
   
   //! returns the number of selected
   Standard_EXPORT AIS_StatusOfPick AddSelect (const Handle(SelectMgr_EntityOwner)& theObject);
index d2cb07c..7b83743 100644 (file)
@@ -1363,6 +1363,15 @@ Standard_Integer AIS_LocalContext::HilightPreviousDetected (const Handle(V3d_Vie
 //=======================================================================
 Standard_Boolean AIS_LocalContext::UnhilightLastDetected (const Handle(V3d_View)& theView)
 {
+  return UnhilightLastDetected (theView->Viewer());
+}
+
+//=======================================================================
+//function : UnhilightLastDetected
+//purpose  :
+//=======================================================================
+Standard_Boolean AIS_LocalContext::UnhilightLastDetected (const Handle(V3d_Viewer)& theViewer)
+{
   if (!IsValidIndex (mylastindex))
   {
     return Standard_False;
@@ -1371,7 +1380,7 @@ Standard_Boolean AIS_LocalContext::UnhilightLastDetected (const Handle(V3d_View)
   myMainPM->BeginImmediateDraw();
   const Handle(SelectMgr_EntityOwner)& anOwner = myMapOfOwner->FindKey (mylastindex);
   anOwner->Unhilight (myMainPM);
-  myMainPM->EndImmediateDraw (theView->Viewer());
+  myMainPM->EndImmediateDraw (theViewer);
   mylastindex = 0;
   return Standard_True;
 }