X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Selection.cxx;h=832c51ec18e0597a7b5d2b600d5bbb7dc338d030;hb=7c69e00bac6eb8b361a2dd2ba9d5f6f7aef9aa82;hp=8c12c817b4ea0e233ebe23d7a63a40ea44174ebd;hpb=7f46c31f2b6e0073d9235615d6fdfc9c017e74c8;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_Selection.cxx b/src/SMESHGUI/SMESHGUI_Selection.cxx index 8c12c817b..832c51ec1 100644 --- a/src/SMESHGUI/SMESHGUI_Selection.cxx +++ b/src/SMESHGUI/SMESHGUI_Selection.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -247,7 +247,7 @@ bool SMESHGUI_Selection::isQuadratic( int ind ) const if ( idSource->_is_nil() ) return false; SMESHGUI_ConvToQuadOp::MeshDestinationType meshTgtType = SMESHGUI_ConvToQuadOp::DestinationMesh( idSource ); - if ( meshTgtType & SMESHGUI_ConvToQuadOp::MeshDestinationType::Linear ) + if ( meshTgtType & SMESHGUI_ConvToQuadOp::Linear ) return true; return false; } @@ -518,11 +518,18 @@ int SMESHGUI_Selection::dim( int ind ) const bool SMESHGUI_Selection::isComputable( int ind ) const { - if ( ind >= 0 && ind < myTypes.count() && myTypes[ind] == "Mesh" ) + if ( ind >= 0 && ind < myTypes.count() && ( myTypes[ind] == "Mesh" || + myTypes[ind].startsWith("Mesh " ))) { QMap modeMap; - _PTR(SObject) so = SMESH::GetActiveStudyDocument()->FindObjectID( entry( ind ).toLatin1().data() ); - SMESHGUI_PrecomputeOp::getAssignedAlgos( so, modeMap ); + _PTR(SObject) meshSO = SMESH::GetActiveStudyDocument()->FindObjectID( entry( ind ).toLatin1().data() ); + + _PTR(SComponent) component = meshSO->GetFatherComponent(); + if ( meshSO->Depth() - component->Depth() > 1 ) // sub-mesh, get a mesh + while ( meshSO->Depth() - component->Depth() > 1 ) + meshSO = meshSO->GetFather(); + + SMESHGUI_PrecomputeOp::getAssignedAlgos( meshSO, modeMap ); return modeMap.size() > 0; } return false;