X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Displayer.cpp;h=0bdf7633e70b7beec87742510e57237057f02272;hb=3e2000ab472f5885de9ce1fbe1e2eb27669b5596;hp=d281f86f08a1578ecea62c8aab33b82ee14ff660;hpb=dfe52d15bccf7cd7d3fec2dd842625dcc5df7437;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Displayer.cpp b/src/XGUI/XGUI_Displayer.cpp index d281f86f0..0bdf7633e 100644 --- a/src/XGUI/XGUI_Displayer.cpp +++ b/src/XGUI/XGUI_Displayer.cpp @@ -110,38 +110,27 @@ void XGUI_Displayer::redisplay(ObjectPtr theObject, bool isUpdateViewer) if (!isVisible(theObject)) return; - Handle(AIS_InteractiveObject) aAISIO; AISObjectPtr aAISObj = getAISObject(theObject); + Handle(AIS_InteractiveObject) aAISIO = aAISObj->impl(); + GeomPresentablePtr aPrs = boost::dynamic_pointer_cast(theObject); if (aPrs) { AISObjectPtr aAIS_Obj = aPrs->getAISObject(aAISObj); - if (aAISObj && !aAIS_Obj) { + if (!aAIS_Obj) { erase(theObject, isUpdateViewer); return; } - aAISIO = aAIS_Obj->impl(); - } else { - ResultPtr aResult = boost::dynamic_pointer_cast(theObject); - if (aResult) { - boost::shared_ptr aShapePtr = ModelAPI_Tools::shape(aResult); - if (aShapePtr) { - Handle(AIS_Shape) aAISShape = Handle(AIS_Shape)::DownCast( - aAISObj->impl()); - if (!aAISShape.IsNull()) { - aAISShape->Set(aShapePtr->impl()); - aAISIO = aAISShape; - } - } + if (aAIS_Obj != aAISObj) { + myResult2AISObjectMap[theObject] = aAIS_Obj; } + aAISIO = aAIS_Obj->impl(); } + if (!aAISIO.IsNull()) { Handle(AIS_InteractiveContext) aContext = AISContext(); if (aContext.IsNull()) return; aContext->Redisplay(aAISIO, isUpdateViewer); - //if (aContext->HasOpenedContext()) { - // aContext->Load(aAISIO, -1, true/*allow decomposition*/); - //} } } @@ -243,14 +232,11 @@ void XGUI_Displayer::setSelected(const QList& theResults, const bool aContext->ClearSelected(); foreach(ObjectPtr aResult, theResults) { - if (myResult2AISObjectMap.find(aResult) == myResult2AISObjectMap.end()) - continue; - - AISObjectPtr anObj = myResult2AISObjectMap[aResult]; - if (anObj) { + if (isVisible(aResult)) { + AISObjectPtr anObj = myResult2AISObjectMap[aResult]; Handle(AIS_InteractiveObject) anAIS = anObj->impl(); if (!anAIS.IsNull()) - aContext->AddOrRemoveSelected(anAIS, false); + aContext->SetSelected(anAIS, false); } } if (isUpdateViewer)