X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Selection.cxx;h=757238eab9af524f9f3240ebd82fe8b8fa7b9cb5;hb=e5a91d8557f450d46990a3845fa7365d6583820b;hp=9895612c3ef499ce1a1e76c10f4be767a360b65e;hpb=c31ad1186e5aa32ebb853f01bf4b1ff6c2af06a5;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_Selection.cxx b/src/SMESHGUI/SMESHGUI_Selection.cxx index 9895612c3..757238eab 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 @@ -118,6 +118,7 @@ QVariant SMESHGUI_Selection::parameter( const int ind, const QString& p ) const QVariant val; if ( p=="client" ) val = QVariant( LightApp_Selection::parameter( p ) ); else if ( p=="type" ) val = QVariant( myTypes[ind] ); + else if ( p=="hasActor" ) val = QVariant( getActor( ind ) != 0 ); else if ( p=="elemTypes" ) val = QVariant( elemTypes( ind ) ); else if ( p=="isAutoColor" ) val = QVariant( isAutoColor( ind ) ); else if ( p=="numberOfNodes" ) val = QVariant( numberOfNodes( ind ) ); @@ -518,11 +519,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;