From: nds Date: Thu, 28 May 2015 11:09:27 +0000 (+0300) Subject: Get back the Trihedron deactivation in the viewer #567 X-Git-Tag: V_1.2.0~33 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=3d7efe9c9240b5699d7dfdc910dd3072860b1f9a;p=modules%2Fshaper.git Get back the Trihedron deactivation in the viewer #567 --- diff --git a/src/XGUI/XGUI_Displayer.cpp b/src/XGUI/XGUI_Displayer.cpp index 1fef7d318..6c0bec4b1 100644 --- a/src/XGUI/XGUI_Displayer.cpp +++ b/src/XGUI/XGUI_Displayer.cpp @@ -367,13 +367,10 @@ void XGUI_Displayer::activateObjects(const QIntList& theModes, const QObjectPtrL } } - Handle(AIS_Trihedron) aTrihedron; AIS_ListIteratorOfListOfInteractive aLIt(aPrsList); for(aLIt.Initialize(aPrsList); aLIt.More(); aLIt.Next()){ anAISIO = aLIt.Value(); - aTrihedron = Handle(AIS_Trihedron)::DownCast(anAISIO); - if (aTrihedron.IsNull()) - activate(anAISIO, myActiveSelectionModes); + activate(anAISIO, myActiveSelectionModes); } } @@ -842,22 +839,27 @@ void XGUI_Displayer::activate(const Handle(AIS_InteractiveObject)& theIO, if (aTColModes.IsEmpty()) aContext->Load(theIO, -1, true); - //aContext->Load(anAISIO, -1, true); - // In order to clear active modes list - if (theModes.size() == 0) { - //aContext->Load(anAISIO, 0, true); - aContext->Activate(theIO); -#ifdef DEBUG_ACTIVATE - qDebug("activate in all modes"); -#endif - } 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()); -#endif + // trihedron AIS check should be after the AIS loading. + // If it is not loaded, it is steel selectable in the viewer. + Handle(AIS_Trihedron) aTrihedron = Handle(AIS_Trihedron)::DownCast(theIO); + 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); + #ifdef DEBUG_ACTIVATE + qDebug("activate in all modes"); + #endif + } 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()); + #endif + } } } }