0026870: Visualization - deactivated selections are not updated after object's re...
authorvpa <vpa@opencascade.com>
Fri, 13 Nov 2015 17:35:30 +0000 (20:35 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 19 Nov 2015 11:31:48 +0000 (14:31 +0300)
- update status in SelectMgr_SelectionManager::RecomputeSelection:
  1) is set to full for all selections;
  2) is switched to none only if selection was actually recomputed;
- test case for issue #26870

src/SelectMgr/SelectMgr_SelectionManager.cxx
tests/bugs/vis/bug26870 [new file with mode: 0644]

index 154c2c6..8aaffba 100644 (file)
@@ -689,6 +689,7 @@ void SelectMgr_SelectionManager::RecomputeSelection (const Handle(SelectMgr_Sele
   for(theObject->Init(); theObject->More(); theObject->Next())
   {
     const Handle(SelectMgr_Selection)& aSelection = theObject->CurrentSelection();
+    aSelection->UpdateStatus (SelectMgr_TOU_Full);
     Standard_Integer aSelMode = aSelection->Mode();
 
     for (TColStd_MapIteratorOfMapOfTransient aSelectorIter (mySelectors); aSelectorIter.More(); aSelectorIter.Next())
@@ -699,10 +700,10 @@ void SelectMgr_SelectionManager::RecomputeSelection (const Handle(SelectMgr_Sele
           ClearSelectionStructures (theObject, aSelMode, aCurSelector);
           theObject->RecomputePrimitives(aSelMode);
           RestoreSelectionStructures (theObject, aSelMode, aCurSelector);
+          aSelection->UpdateStatus (SelectMgr_TOU_None);
+          aSelection->UpdateBVHStatus (SelectMgr_TBU_None);
       }
     }
-    aSelection->UpdateStatus (SelectMgr_TOU_None);
-    aSelection->UpdateBVHStatus (SelectMgr_TBU_None);
   }
 }
 
diff --git a/tests/bugs/vis/bug26870 b/tests/bugs/vis/bug26870
new file mode 100644 (file)
index 0000000..c90f4d1
--- /dev/null
@@ -0,0 +1,37 @@
+puts "============"
+puts "CR26870"
+puts "============"
+puts ""
+
+##########################################################################################
+puts "Visualization - deactivated selections are not updated after object's re-computation"
+##########################################################################################
+
+pload VISUALIZATION MODELING
+
+vinit
+box b 1 1 1
+vdisplay b
+vfit
+
+vselmode b 2 1
+vselmode b 4 1
+vselmode b 4 0
+
+box b 3 3 3
+vdisplay b
+vfit
+
+vselmode 4 1
+
+# pick a point onto previously computed face
+vmoveto 80 265
+if {[vreadpixel 90 206 name] == "CYAN1 1"} {
+  puts "ERROR: previously computed entities are highlighted! Selection mode 4 was not updated after redisplaying the box."
+}
+# pick a point onto box
+if {[vreadpixel 29 216 name] == "YELLOW 1"} {
+  puts "ERROR: the box's face is not highlighted! Selection mode 4 was not updated after redisplaying the box."
+}
+
+set only_screen 1