X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FXGUI%2FXGUI_Displayer.cpp;h=1fef7d318df56218a33259c935498e3c42dcbea8;hb=9d2e6d9c21e4f16817ca5b572847fe323f6ef32a;hp=fd7e7707991bcdb668d8d9bf98bba9c5f5d7139a;hpb=1f245a12321ab8aaa9e54050b0eedc2ab1bd650e;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Displayer.cpp b/src/XGUI/XGUI_Displayer.cpp index fd7e77079..1fef7d318 100644 --- a/src/XGUI/XGUI_Displayer.cpp +++ b/src/XGUI/XGUI_Displayer.cpp @@ -331,7 +331,7 @@ void XGUI_Displayer::getModesOfActivation(ObjectPtr theObject, QIntList& theMode } } -void XGUI_Displayer::activateObjects(const QIntList& theModes) +void XGUI_Displayer::activateObjects(const QIntList& theModes, const QObjectPtrList& theObjList) { #ifdef DEBUG_ACTIVATE qDebug(QString("activate all features: theModes: %2, myActiveSelectionModes: %3"). @@ -356,15 +356,24 @@ void XGUI_Displayer::activateObjects(const QIntList& theModes) //aContext->UseDisplayedObjects(); //myUseExternalObjects = true; + Handle(AIS_InteractiveObject) anAISIO; AIS_ListOfInteractive aPrsList; - ::displayedObjects(aContext, aPrsList); + if (theObjList.isEmpty()) + ::displayedObjects(aContext, aPrsList); + else { + foreach(ObjectPtr aObj, theObjList) { + if (myResult2AISObjectMap.contains(aObj)) + aPrsList.Append(myResult2AISObjectMap[aObj]->impl()); + } + } Handle(AIS_Trihedron) aTrihedron; AIS_ListIteratorOfListOfInteractive aLIt(aPrsList); - Handle(AIS_InteractiveObject) anAISIO; for(aLIt.Initialize(aPrsList); aLIt.More(); aLIt.Next()){ anAISIO = aLIt.Value(); - activate(anAISIO, myActiveSelectionModes); + aTrihedron = Handle(AIS_Trihedron)::DownCast(anAISIO); + if (aTrihedron.IsNull()) + activate(anAISIO, myActiveSelectionModes); } } @@ -833,26 +842,22 @@ void XGUI_Displayer::activate(const Handle(AIS_InteractiveObject)& theIO, if (aTColModes.IsEmpty()) aContext->Load(theIO, -1, true); - Handle(AIS_Trihedron) aTrihedron = Handle(AIS_Trihedron)::DownCast(theIO); - //Deactivate trihedron which can be activated in local selector - if (aTrihedron.IsNull()) { //aContext->Load(anAISIO, -1, true); // In order to clear active modes list - if (theModes.size() == 0) { - //aContext->Load(anAISIO, 0, true); - aContext->Activate(theIO); + if (theModes.size() == 0) { + //aContext->Load(anAISIO, 0, true); + aContext->Activate(theIO); #ifdef DEBUG_ACTIVATE - qDebug("activate in all modes"); + qDebug("activate in all modes"); #endif - } else { - foreach(int aMode, theModes) { - //aContext->Load(anAISIO, aMode, true); - if (!aModesActivatedForIO.contains(aMode)) { - aContext->Activate(theIO, aMode); + } else { + foreach(int aMode, theModes) { + //aContext->Load(anAISIO, aMode, true); + if (!aModesActivatedForIO.contains(aMode)) { + aContext->Activate(theIO, aMode); #ifdef DEBUG_ACTIVATE - qDebug(QString("activate: %1").arg(aMode).toStdString().c_str()); + qDebug(QString("activate: %1").arg(aMode).toStdString().c_str()); #endif - } } } }