From 3d7efe9c9240b5699d7dfdc910dd3072860b1f9a Mon Sep 17 00:00:00 2001 From: nds Date: Thu, 28 May 2015 14:09:27 +0300 Subject: [PATCH] Get back the Trihedron deactivation in the viewer #567 --- src/XGUI/XGUI_Displayer.cpp | 42 +++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 20 deletions(-) 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 + } } } } -- 2.39.2