mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 08:50:35 +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 (myActorsList.count() == 0) {
|
||||||
if (!myGroup->_is_nil())
|
if (!myGroup->_is_nil()) {
|
||||||
myActorsList.append( SMESH::FindActorByObject(myGroup) );
|
SMESH_Actor* anActor = SMESH::FindActorByObject(myGroup);
|
||||||
else if(!myGroupOnGeom->_is_nil())
|
if ( anActor )
|
||||||
myActorsList.append( SMESH::FindActorByObject(myGroupOnGeom) );
|
myActorsList.append( anActor );
|
||||||
else
|
}
|
||||||
myActorsList.append( SMESH::FindActorByObject(myMesh) );
|
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,
|
// somehow, if we display the mesh, while selecting from another actor,
|
||||||
// the mesh becomes pickable, and there is no way to select any element
|
// the mesh becomes pickable, and there is no way to select any element
|
||||||
if (myActorsList.count() > 0) {
|
if (myActorsList.count() > 0) {
|
||||||
QListIterator<SMESH_Actor*> it( myActorsList );
|
QListIterator<SMESH_Actor*> it( myActorsList );
|
||||||
while ( it.hasNext() )
|
while ( it.hasNext() ) {
|
||||||
it.next()->SetPickable(true);
|
SMESH_Actor* anActor = it.next();
|
||||||
|
if ( IsActorVisible(anActor) )
|
||||||
|
anActor->SetPickable(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
myIsBusy = false;
|
myIsBusy = false;
|
||||||
@ -2257,8 +2269,11 @@ bool SMESHGUI_GroupDlg::SetAppropriateActor()
|
|||||||
|
|
||||||
if (myActorsList.count() > 0) {
|
if (myActorsList.count() > 0) {
|
||||||
QListIterator<SMESH_Actor*> it( myActorsList );
|
QListIterator<SMESH_Actor*> it( myActorsList );
|
||||||
while ( it.hasNext() )
|
while ( it.hasNext() ) {
|
||||||
it.next()->SetPickable(true);
|
SMESH_Actor* anActor = it.next();
|
||||||
|
if ( IsActorVisible(anActor) )
|
||||||
|
anActor->SetPickable(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ( isActor || (myActorsList.count() > 0) );
|
return ( isActor || (myActorsList.count() > 0) );
|
||||||
@ -2297,3 +2312,15 @@ void SMESHGUI_GroupDlg::restoreShowEntityMode()
|
|||||||
}
|
}
|
||||||
myStoredShownEntity = 0;
|
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;
|
||||||
|
}
|
||||||
|
@ -128,6 +128,8 @@ private:
|
|||||||
void setShowEntityMode();
|
void setShowEntityMode();
|
||||||
void restoreShowEntityMode();
|
void restoreShowEntityMode();
|
||||||
|
|
||||||
|
bool IsActorVisible( SMESH_Actor* );
|
||||||
|
|
||||||
void setGroupColor( const SALOMEDS::Color& );
|
void setGroupColor( const SALOMEDS::Color& );
|
||||||
SALOMEDS::Color getGroupColor() const;
|
SALOMEDS::Color getGroupColor() const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user