]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Optimize updates of viewer
authorvsv <vsv@opencascade.com>
Mon, 30 Sep 2019 16:09:08 +0000 (19:09 +0300)
committervsv <vsv@opencascade.com>
Mon, 30 Sep 2019 16:09:08 +0000 (19:09 +0300)
src/XGUI/XGUI_ViewerProxy.cpp
src/XGUI/XGUI_ViewerProxy.h

index 84e45201eb644966210e7f7a1bfd4ad2401b5223..4cc8abee149450e6872866c2a93c451969293d51 100644 (file)
@@ -486,16 +486,18 @@ void XGUI_ViewerProxy::displayHighlight(FeaturePtr theFeature, const TopoDS_Shap
   }
 }
 
-void XGUI_ViewerProxy::eraseHighlight()
+bool XGUI_ViewerProxy::eraseHighlight()
 {
   Handle(AIS_InteractiveContext) aContext = AISContext();
   Handle(AIS_InteractiveObject) anAISIO;
   AIS_ListIteratorOfListOfInteractive aLIt;
+  bool isErased = myHighlights.Extent() > 0;
   for (aLIt.Initialize(myHighlights); aLIt.More(); aLIt.Next()) {
     anAISIO = aLIt.Value();
     aContext->Remove(anAISIO, false);
   }
   myHighlights.Clear();
+  return isErased;
 }
 
 void XGUI_ViewerProxy::updateHighlight()
@@ -531,8 +533,9 @@ void XGUI_ViewerProxy::updateHighlight()
       }
     }
     if (!isDisplayed) {
-      eraseHighlight();
-      aContext->UpdateCurrentViewer();
+      if (eraseHighlight()) {
+        aContext->UpdateCurrentViewer();
+      }
       myResult = ResultPtr();
     }
   }
index 723aae64437e3a602f05eb63dba01c1294f5f31d..19e23ac3bff3a7d737d150fc29f7a158adb3338d 100644 (file)
@@ -216,7 +216,7 @@ private slots:
 
  private:
    void displayHighlight(FeaturePtr theFeature, const TopoDS_Shape& theIgnoreShape);
-   void eraseHighlight();
+   bool eraseHighlight();
 
 
   XGUI_Workshop* myWorkshop;