diff --git a/src/AIS/AIS_InteractiveContext_2.cxx b/src/AIS/AIS_InteractiveContext_2.cxx index 629f497078..4159a3b5fd 100755 --- a/src/AIS/AIS_InteractiveContext_2.cxx +++ b/src/AIS/AIS_InteractiveContext_2.cxx @@ -77,14 +77,16 @@ OpenLocalContext(const Standard_Boolean UseDisplayedObjects, UseDisplayedObjects, AllowShapeDecomposition, AcceptEraseOfTemporary); - NewLocal->MainSelector()->Set ((myLocalContexts.Extent() > 0) + // the AIS_LocalContext bind itself to myLocalContexts + // because procedures performed in AIS_LocalContext constructor + // already may access myLocalContexts(myCurLocalIndex) (like methods AIS_LocalContext::IsSelected()). + //myLocalContexts.Bind (myCurLocalIndex, NewLocal); + NewLocal->MainSelector()->Set ((myLocalContexts.Extent() > 1) ? myLocalContexts (untilnow)->MainSelector()->Projector() : myMainSel->Projector()); NewLocal->MainSelector()->UpdateConversion(); - myLocalContexts.Bind(myCurLocalIndex,NewLocal); - #ifdef DEB cout<<"\tOpen Local Context No "<myLocalContexts.Bind (Index, this); + myMainPM = aCtx->MainPrsMgr(); mySelName = AIS_Local_SelName(this, Index); AIS_Selection::CreateSelection(mySelName.ToCString()); diff --git a/src/QABugs/QABugs_11.cxx b/src/QABugs/QABugs_11.cxx index 65440a7e48..947ef99a77 100755 --- a/src/QABugs/QABugs_11.cxx +++ b/src/QABugs/QABugs_11.cxx @@ -5403,6 +5403,59 @@ Standard_Integer CR23403 (Draw_Interpretor& di, Standard_Integer argc, const cha return 0; } +#include +#include +Standard_Integer CR23234 (Draw_Interpretor& di, Standard_Integer argc, const char ** argv) +{ + // Check the command arguments + if (argc != 2) + { + di <<"Error: "<HasOpenedContext()) + { + aisContext->CloseAllContexts(); + aisContext->RemoveAll(false); + aisContext->EraseSelected(false, false); + } + aisContext->EraseAll(false,false); + Handle(Geom_Axis2Placement) trihedronAxis = new Geom_Axis2Placement(gp::XOY()); + Handle(AIS_Trihedron) trihedron = new AIS_Trihedron(trihedronAxis); + if (aMode) + trihedron->UnsetSelectionMode(); // this line causes an exception on OpenLocalContext + trihedron->SetSize(20); + trihedron->SetColor(Quantity_NOC_GRAY30); + trihedron->SetArrowColor(Quantity_NOC_GRAY30); + trihedron->SetTextColor(Quantity_NOC_DARKSLATEBLUE); + + //trihedron->SetColor(Quantity_NameOfColor::Quantity_NOC_GRAY30); + //trihedron->SetArrowColor(Quantity_NameOfColor::Quantity_NOC_GRAY30); + //trihedron->SetTextColor(Quantity_NameOfColor::Quantity_NOC_DARKSLATEBLUE); + + + aisContext->Display(trihedron, true); + aisContext->OpenLocalContext(); + //aisContext->ActivateStandardMode(TopAbs_ShapeEnum::TopAbs_EDGE); + aisContext->ActivateStandardMode(TopAbs_EDGE); + aisContext->SetSensitivity(8); + + return 0; //TCL_OK +} + void QABugs::Commands_11(Draw_Interpretor& theCommands) { const char *group = "QABugs"; @@ -5514,5 +5567,6 @@ void QABugs::Commands_11(Draw_Interpretor& theCommands) { theCommands.Add("OCC22558", "OCC22558 x_vec y_vec z_vec x_dir y_dir z_dit x_pnt y_pnt z_pnt", __FILE__, OCC22558, group); theCommands.Add("CR23403", "CR23403 string", __FILE__, CR23403, group); theCommands.Add("OCC23429", "OCC23429 res shape tool [appr]", __FILE__, OCC23429, group); + theCommands.Add("CR23234", "CR23234 mode(0/1)", __FILE__, CR23234, group); return; } diff --git a/tests/bugs/end b/tests/bugs/end index 796d1959e3..014f78ba51 100755 --- a/tests/bugs/end +++ b/tests/bugs/end @@ -14,6 +14,12 @@ if { [isdraw result] } { vfit vdump $imagedir/${test_image}.gif } +} else { + if { [info exists 3dviewer] } { + if { ${3dviewer} == 2 } { + vdump $imagedir/${test_image}.gif + } + } } if { [info exist only_xwd] } { xwd $imagedir/${test_image}.gif diff --git a/tests/bugs/vis/CR23407_1 b/tests/bugs/vis/CR23407_1 index 251c578a8d..bacf808f24 100755 --- a/tests/bugs/vis/CR23407_1 +++ b/tests/bugs/vis/CR23407_1 @@ -31,10 +31,4 @@ if { $rd != $r_check || $gr != $g_check || $bl != $b_check } { puts "Error : Boundary of face is not changed" } -set 3dviewer 1 - - - - - - +set 3dviewer 2 diff --git a/tests/bugs/vis/CR23407_2 b/tests/bugs/vis/CR23407_2 index 64f1335156..522c5d595b 100755 --- a/tests/bugs/vis/CR23407_2 +++ b/tests/bugs/vis/CR23407_2 @@ -31,9 +31,4 @@ if { $rd != $r_check || $gr != $g_check || $bl != $b_check } { puts "Error : Boundary of face is not changed" } -set 3dviewer 1 - - - - - +set 3dviewer 2