0027538: Visualization, AIS_InteractiveContext::Display() - do not erase previous...
authormgn <mgn@opencascade.com>
Tue, 24 May 2016 14:43:32 +0000 (17:43 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 27 May 2016 08:57:38 +0000 (11:57 +0300)
AIS_InteractiveContext::Display() does not erases old presentation modes of interactive object anymore giving us performance benefit AIS_InteractiveContext::Display() is used. Instead, the method marks them hidden in the same way as AIS_InteractiveContext::SetDisplayMode() and ::UnsetDisplayMode().

src/AIS/AIS_InteractiveContext.cxx

index c6c7f93..867005e 100644 (file)
@@ -449,7 +449,7 @@ void AIS_InteractiveContext::Display (const Handle(AIS_InteractiveObject)& theIO
       return;
     }
 
-    // Erase presentations for all display modes different from aDispMode.
+    // Mark the presentation modes hidden of interactive object different from aDispMode.
     // Then make sure aDispMode is displayed and maybe highlighted.
     // Finally, activate selection mode <SelMode> if not yet activated.
     TColStd_ListOfInteger aModesToRemove;
@@ -463,7 +463,7 @@ void AIS_InteractiveContext::Display (const Handle(AIS_InteractiveObject)& theIO
         {
           myMainPM->Unhighlight (theIObj, anOldMode);
         }
-        myMainPM->Erase (theIObj, anOldMode);
+        myMainPM->SetVisibility (theIObj, anOldMode, Standard_False);
       }
     }