diff --git a/src/SelectMgr/SelectMgr_SelectionManager.cxx b/src/SelectMgr/SelectMgr_SelectionManager.cxx index d2a1012dbd..6aa89831c2 100644 --- a/src/SelectMgr/SelectMgr_SelectionManager.cxx +++ b/src/SelectMgr/SelectMgr_SelectionManager.cxx @@ -687,6 +687,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()) @@ -697,10 +698,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 index 0000000000..c90f4d153f --- /dev/null +++ b/tests/bugs/vis/bug26870 @@ -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