X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMGUI%2FGeometryGUI_Swig.cxx;h=e2f15aa45e97b44065c8aa4a1fded5a809770fce;hb=8f2d0b5697219b8b53289bd9c25a60ddc354ab53;hp=9c9c9533d58e4cb2efe6c422734439901a5e6050;hpb=004197ec827d52331f0d529202eb4e52a1c4388f;p=modules%2Fgeom.git diff --git a/src/GEOMGUI/GeometryGUI_Swig.cxx b/src/GEOMGUI/GeometryGUI_Swig.cxx index 9c9c9533d..e2f15aa45 100644 --- a/src/GEOMGUI/GeometryGUI_Swig.cxx +++ b/src/GEOMGUI/GeometryGUI_Swig.cxx @@ -68,7 +68,7 @@ #include -static GEOM_Client ShapeReader; +static SHAPE_READER(ShapeReader); inline OCCViewer_Viewer* GetOCCViewer(SUIT_Application* theApp){ SUIT_ViewWindow* window = theApp->desktop()->activeWindow(); @@ -472,24 +472,28 @@ void GEOM_Swig::setColor(const char* theEntry, int red, int green, int blue, boo aView->Repaint(); } else if (OCCViewer_Viewer* occViewer = GetOCCViewer(anApp)) { Handle(AIS_InteractiveContext) ic = occViewer->getAISContext(); - AIS_ListOfInteractive List; - ic->DisplayedObjects(List); - AIS_ListIteratorOfListOfInteractive ite (List); - for (; ite.More(); ite.Next()) { - Handle(SALOME_InteractiveObject) anObj = - Handle(SALOME_InteractiveObject)::DownCast(ite.Value()->GetOwner()); - if (!anObj.IsNull() && anObj->hasEntry() && anObj->isSame(anIO)) { - Quantity_Color CSFColor = - Quantity_Color(myRed/255., myGreen/255., myBlue/255., Quantity_TOC_RGB); - ite.Value()->SetColor(CSFColor); - if (ite.Value()->IsKind(STANDARD_TYPE(GEOM_AISShape))) - Handle(GEOM_AISShape)::DownCast(ite.Value())->SetShadingColor(CSFColor); - ic->Redisplay(ite.Value(), true, true); - if (myUpdateViewer) - occViewer->update(); - break; + SOCC_Viewer* soccViewer = dynamic_cast(occViewer); + if (soccViewer) + { + SALOME_Prs* prs= soccViewer->CreatePrs( myEntry.c_str() ); + const SOCC_Prs* anOCCPrs = dynamic_cast( prs ); + if ( !anOCCPrs || anOCCPrs->IsNull() ) + return; + + // get objects to be displayed + AIS_ListOfInteractive anAISObjects; + anOCCPrs->GetObjects( anAISObjects ); + AIS_ListIteratorOfListOfInteractive ite( anAISObjects ); + Quantity_Color CSFColor = Quantity_Color(myRed/255., myGreen/255., myBlue/255., Quantity_TOC_RGB); + for ( ; ite.More(); ite.Next() ) + { + if(!ic->IsDisplayed(ite.Value()))continue; //only displayed ais + ite.Value()->SetColor(CSFColor); + if (ite.Value()->IsKind(STANDARD_TYPE(GEOM_AISShape))) Handle(GEOM_AISShape)::DownCast(ite.Value())->SetShadingColor(CSFColor); + ite.Value()->Redisplay(Standard_True); // as in OnColor + } + if (myUpdateViewer) occViewer->update(); } - } } } };