mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-24 16:30:34 +05:00
0020501: EDF 1098 SMESH: Display only groups, edit a group: can't select face from other group
This commit is contained in:
parent
f6c3a1e96c
commit
d8333f0d47
@ -1298,20 +1298,32 @@ void SMESHGUI_GroupDlg::onObjectSelectionChanged()
|
||||
}
|
||||
|
||||
if (myActorsList.count() == 0) {
|
||||
if (!myGroup->_is_nil())
|
||||
myActorsList.append( SMESH::FindActorByObject(myGroup) );
|
||||
else if(!myGroupOnGeom->_is_nil())
|
||||
myActorsList.append( SMESH::FindActorByObject(myGroupOnGeom) );
|
||||
else
|
||||
myActorsList.append( SMESH::FindActorByObject(myMesh) );
|
||||
if (!myGroup->_is_nil()) {
|
||||
SMESH_Actor* anActor = SMESH::FindActorByObject(myGroup);
|
||||
if ( anActor )
|
||||
myActorsList.append( anActor );
|
||||
}
|
||||
else if(!myGroupOnGeom->_is_nil()) {
|
||||
SMESH_Actor* anActor = SMESH::FindActorByObject(myGroupOnGeom);
|
||||
if ( anActor )
|
||||
myActorsList.append( anActor );
|
||||
}
|
||||
else {
|
||||
SMESH_Actor* anActor = SMESH::FindActorByObject( myMesh );
|
||||
if ( anActor )
|
||||
myActorsList.append( anActor );
|
||||
}
|
||||
}
|
||||
|
||||
// somehow, if we display the mesh, while selecting from another actor,
|
||||
// the mesh becomes pickable, and there is no way to select any element
|
||||
if (myActorsList.count() > 0) {
|
||||
QListIterator<SMESH_Actor*> it( myActorsList );
|
||||
while ( it.hasNext() )
|
||||
it.next()->SetPickable(true);
|
||||
while ( it.hasNext() ) {
|
||||
SMESH_Actor* anActor = it.next();
|
||||
if ( IsActorVisible(anActor) )
|
||||
anActor->SetPickable(true);
|
||||
}
|
||||
}
|
||||
|
||||
myIsBusy = false;
|
||||
@ -2257,8 +2269,11 @@ bool SMESHGUI_GroupDlg::SetAppropriateActor()
|
||||
|
||||
if (myActorsList.count() > 0) {
|
||||
QListIterator<SMESH_Actor*> it( myActorsList );
|
||||
while ( it.hasNext() )
|
||||
it.next()->SetPickable(true);
|
||||
while ( it.hasNext() ) {
|
||||
SMESH_Actor* anActor = it.next();
|
||||
if ( IsActorVisible(anActor) )
|
||||
anActor->SetPickable(true);
|
||||
}
|
||||
}
|
||||
|
||||
return ( isActor || (myActorsList.count() > 0) );
|
||||
@ -2297,3 +2312,15 @@ void SMESHGUI_GroupDlg::restoreShowEntityMode()
|
||||
}
|
||||
myStoredShownEntity = 0;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : IsActorVisible
|
||||
//purpose : return visibility of the actor
|
||||
//=======================================================================
|
||||
bool SMESHGUI_GroupDlg::IsActorVisible( SMESH_Actor* theActor )
|
||||
{
|
||||
SVTK_ViewWindow* aViewWindow = SMESH::GetCurrentVtkView();
|
||||
if (theActor && aViewWindow)
|
||||
return aViewWindow->isVisible(theActor->getIO());
|
||||
return false;
|
||||
}
|
||||
|
@ -127,6 +127,8 @@ private:
|
||||
bool SetAppropriateActor();
|
||||
void setShowEntityMode();
|
||||
void restoreShowEntityMode();
|
||||
|
||||
bool IsActorVisible( SMESH_Actor* );
|
||||
|
||||
void setGroupColor( const SALOMEDS::Color& );
|
||||
SALOMEDS::Color getGroupColor() const;
|
||||
|
Loading…
Reference in New Issue
Block a user