mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-05 18:16:23 +03:00
0026566: Visualization - incorrect highlight after selection of owners with auto-highlight disabled
Unhighlight of previously selected owners was corrected
This commit is contained in:
parent
82314bdf8c
commit
5212bbb005
@ -1014,16 +1014,32 @@ void AIS_InteractiveContext::SetSelected (const Handle(SelectMgr_EntityOwner)& t
|
||||
|
||||
AIS_Selection::SetCurrentSelection (myCurrentName.ToCString());
|
||||
Handle(AIS_Selection) aCurSel = AIS_Selection::Selection (myCurrentName.ToCString());
|
||||
NCollection_IndexedMap<Handle(AIS_InteractiveObject)> anObjToClear;
|
||||
for (aCurSel->Init(); aCurSel->More(); aCurSel->Next())
|
||||
{
|
||||
const Handle(SelectMgr_EntityOwner) anOwner =
|
||||
Handle(SelectMgr_EntityOwner)::DownCast (aCurSel->Value());
|
||||
if (!anOwner->HasSelectable())
|
||||
continue;
|
||||
const Standard_Integer aHiMode = anObject->HasHilightMode() ? anObject->HilightMode() : 0;
|
||||
anOwner->Unhilight (myMainPM, aHiMode);
|
||||
const Handle(AIS_InteractiveObject) anInteractive =
|
||||
Handle(AIS_InteractiveObject)::DownCast (anOwner->Selectable());
|
||||
if (anOwner->IsAutoHilight())
|
||||
{
|
||||
const Standard_Integer aHiMode = anInteractive->HasHilightMode() ? anInteractive->HilightMode() : 0;
|
||||
anOwner->Unhilight (myMainPM, aHiMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!anObjToClear.Contains (anInteractive))
|
||||
anObjToClear.Add (anInteractive);
|
||||
}
|
||||
anOwner->State (0);
|
||||
}
|
||||
while (!anObjToClear.IsEmpty())
|
||||
{
|
||||
anObjToClear.FindKey (anObjToClear.Size())->ClearSelected();
|
||||
anObjToClear.RemoveLast();
|
||||
}
|
||||
|
||||
AIS_Selection::ClearAndSelect (theOwner);
|
||||
theOwner->State (1);
|
||||
|
38
tests/bugs/vis/bug26566
Normal file
38
tests/bugs/vis/bug26566
Normal file
@ -0,0 +1,38 @@
|
||||
puts "========"
|
||||
puts "OCC26566"
|
||||
puts "========"
|
||||
puts ""
|
||||
##################################################################
|
||||
puts "Visualization - incorrect highlight after selection of owners with auto-highlight disabled"
|
||||
##################################################################
|
||||
|
||||
pload VISUALIZATION MODELING XSDRAW
|
||||
vinit
|
||||
|
||||
# create an object with auto-highlight disabled
|
||||
meshfromstl m [locate_data_file b.stl]
|
||||
vselmode m 8 1
|
||||
|
||||
# create an object with auto-highlight enabled
|
||||
box b 100 100 100
|
||||
vdisplay b
|
||||
|
||||
vfit
|
||||
|
||||
# select box
|
||||
vselect 200 200
|
||||
|
||||
# select mesh with auto-highlight disabled
|
||||
vselect 290 370
|
||||
# check that box is drawn with its own color
|
||||
checkcolor 321 128 1 1 0
|
||||
# check that selection prs for mesh is displayed
|
||||
checkcolor 316 321 0.8 0.8 0.8
|
||||
|
||||
vselect 200 200
|
||||
# check that box is highlighted with selection color
|
||||
checkcolor 321 128 0.8 0.8 0.8
|
||||
# check that mesh is drawn without selection
|
||||
checkcolor 316 321 0 0 0
|
||||
|
||||
set only_screen 1
|
Loading…
x
Reference in New Issue
Block a user