From 78bfc8db7d5be814985cdbda3eb33936e42288c1 Mon Sep 17 00:00:00 2001 From: eap Date: Thu, 5 Dec 2013 09:32:23 +0000 Subject: [PATCH 1/1] 22434: [CEA 1022] If selection is disabled, the contextual menu of VTK view does not update on selected object Fix processOwner() for the case of disabled SVTK selection --- src/SMESHGUI/SMESHGUI_Selection.cxx | 100 +++++++++++++++------------- 1 file changed, 53 insertions(+), 47 deletions(-) diff --git a/src/SMESHGUI/SMESHGUI_Selection.cxx b/src/SMESHGUI/SMESHGUI_Selection.cxx index f90e76ca0..ea8bf0317 100644 --- a/src/SMESHGUI/SMESHGUI_Selection.cxx +++ b/src/SMESHGUI/SMESHGUI_Selection.cxx @@ -93,10 +93,16 @@ bool SMESHGUI_Selection::processOwner( const LightApp_DataOwner* ow ) { const LightApp_SVTKDataOwner* owner = dynamic_cast ( ow ); - if( owner ) + if( owner ) { myActors.append( dynamic_cast( owner->GetActor() ) ); - else + } + else if ( ow ) { // SVTK selection disabled + QString entry = ow->entry(); + myActors.append( SMESH::FindActorByEntry( entry.toStdString().c_str() )); + } + else { myActors.append( 0 ); + } return true; } @@ -433,7 +439,7 @@ int SMESHGUI_Selection::dim( int ind ) const case SMESH::BALL : dim = std::max( dim, 0 ); break; default: break; } - } + } } } } @@ -454,19 +460,19 @@ QVariant SMESHGUI_Selection::isComputable( int ind ) const if( !CORBA::is_nil( obj ) ) { SMESH::SMESH_Mesh_var mesh = SMESH::SMESH_Mesh::_narrow( obj ); if ( !CORBA::is_nil( mesh ) ) { - if ( mesh->HasShapeToMesh() ) { - GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so ); - return QVariant( !shape->_is_nil() ); - } - else - { - return QVariant( mesh->NbFaces() !=0 ); - } + if ( mesh->HasShapeToMesh() ) { + GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so ); + return QVariant( !shape->_is_nil() ); + } + else + { + return QVariant( mesh->NbFaces() !=0 ); + } } else { - GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so ); - return QVariant( !shape->_is_nil() ); + GEOM::GEOM_Object_var shape = SMESH::GetShapeOnMeshOrSubMesh( so ); + return QVariant( !shape->_is_nil() ); } } } @@ -582,42 +588,42 @@ int SMESHGUI_Selection::type( const QString& entry, _PTR(Study) study ) if ( objComponent->ComponentDataType() == "SMESH" ) { if ( objComponent->GetIOR() == obj->GetIOR() ) { - res = SMESH::COMPONENT; + res = SMESH::COMPONENT; } else { - int aLevel = obj->Depth() - objComponent->Depth(), - aFTag = objFather->Tag(), - anOTag = obj->Tag(); - - switch ( aLevel ) - { - case 1: - if ( anOTag >= SMESH::Tag_FirstMeshRoot ) - res = SMESH::MESH; - break; - case 2: - switch ( aFTag ) - { - case SMESH::Tag_HypothesisRoot: res = SMESH::HYPOTHESIS; break; - case SMESH::Tag_AlgorithmsRoot: res = SMESH::ALGORITHM; break; - default: break; - } - break; - case 3: - switch ( aFTag ) - { - case SMESH::Tag_SubMeshOnVertex: res = SMESH::SUBMESH_VERTEX; break; - case SMESH::Tag_SubMeshOnEdge: res = SMESH::SUBMESH_EDGE; break; - case SMESH::Tag_SubMeshOnFace: res = SMESH::SUBMESH_FACE; break; - case SMESH::Tag_SubMeshOnSolid: res = SMESH::SUBMESH_SOLID; break; - case SMESH::Tag_SubMeshOnCompound: res = SMESH::SUBMESH_COMPOUND; break; - default: - if ( aFTag >= SMESH::Tag_FirstGroup) res = SMESH::GROUP; - else res = SMESH::SUBMESH; - break; - } - break; - } + int aLevel = obj->Depth() - objComponent->Depth(), + aFTag = objFather->Tag(), + anOTag = obj->Tag(); + + switch ( aLevel ) + { + case 1: + if ( anOTag >= SMESH::Tag_FirstMeshRoot ) + res = SMESH::MESH; + break; + case 2: + switch ( aFTag ) + { + case SMESH::Tag_HypothesisRoot: res = SMESH::HYPOTHESIS; break; + case SMESH::Tag_AlgorithmsRoot: res = SMESH::ALGORITHM; break; + default: break; + } + break; + case 3: + switch ( aFTag ) + { + case SMESH::Tag_SubMeshOnVertex: res = SMESH::SUBMESH_VERTEX; break; + case SMESH::Tag_SubMeshOnEdge: res = SMESH::SUBMESH_EDGE; break; + case SMESH::Tag_SubMeshOnFace: res = SMESH::SUBMESH_FACE; break; + case SMESH::Tag_SubMeshOnSolid: res = SMESH::SUBMESH_SOLID; break; + case SMESH::Tag_SubMeshOnCompound: res = SMESH::SUBMESH_COMPOUND; break; + default: + if ( aFTag >= SMESH::Tag_FirstGroup) res = SMESH::GROUP; + else res = SMESH::SUBMESH; + break; + } + break; + } } } } -- 2.30.2