]> OCCT Git - occt.git/commitdiff
0026726: Draw Harness, ViewerTest - AIS_InteractiveContext::EraseSelected() lacks...
authorisk <isk@opencascade.com>
Fri, 29 Jan 2016 07:34:22 +0000 (10:34 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 4 Feb 2016 10:20:38 +0000 (13:20 +0300)
Update draw command ViewerTest::Erase().

src/ViewerTest/ViewerTest.cxx
tests/bugs/vis/bug26726 [new file with mode: 0644]

index 7fc38d352b92e48391e7f31b1ff5f13d92f7845e..75af39a4c7e8122edb5d56312dc0543d68e72843 100644 (file)
@@ -2776,6 +2776,7 @@ int VErase (Draw_Interpretor& theDI,
   else if (!toEraseAll && aCtx->NbSelected() > 0)
   {
     // Erase selected objects
+    const Standard_Boolean aHasOpenedContext = aCtx->HasOpenedContext();
     for (ViewerTest_DoubleMapIteratorOfDoubleMapOfInteractiveAndName anIter (GetMapOfAIS());
          anIter.More(); anIter.Next())
     {
@@ -2788,12 +2789,17 @@ int VErase (Draw_Interpretor& theDI,
         {
           aCtx->SetViewAffinity (anIO, aView, Standard_False);
         }
-        else
+        else if (aHasOpenedContext)
         {
           aCtx->Erase (anIO, Standard_False);
         }
       }
     }
+
+    if (!toEraseInView)
+    {
+      aCtx->EraseSelected (Standard_False);
+    }
   }
   else
   {
diff --git a/tests/bugs/vis/bug26726 b/tests/bugs/vis/bug26726
new file mode 100644 (file)
index 0000000..2580e4d
--- /dev/null
@@ -0,0 +1,36 @@
+puts "============"
+puts "OCC26726 erase selected objects"
+puts "============"
+puts ""
+pload VISUALIZATION
+
+
+vclear
+vclose all
+vinit
+vsetdispmode 1
+
+box b0 5 0 0 1 1 1
+box b1 0 5 0 1 1 1
+box b2 0 0 5 1 1 1
+box b3 5 5 5 1 1 1
+
+vdisplay b0 b1 b2 b3
+
+vdump $imagedir/${casename}_0.png
+
+vfit
+
+vselect 0 0 500 500
+verase
+
+vdump $imagedir/${casename}_1.png
+
+set info_b0 [vreadpixel 205 355 name]
+set info_b1 [vreadpixel 205 190 name]
+set info_b2 [vreadpixel 60 100 name]
+set info_b3 [vreadpixel 350 100 name]
+
+if { $info_b0 != "BLACK 0" || $info_b1 != "BLACK 0" || $info_b2 != "BLACK 0" || $info_b3 != "BLACK 0" } {
+  puts "Error: OCC26726 is reproduced. AIS_InteractiveContext::EraseSelected is incorrect."
+}