mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-02-09 17:23:08 +05:00
Issue "0021757: EDF 1829 : Activate bring to front action on simple selection of an object": additional patch from Renaud NEDELEC.
This commit is contained in:
parent
f5c8555cd0
commit
7cb2566ca6
@ -75,7 +75,7 @@
|
|||||||
#include <LightApp_Preferences.h>
|
#include <LightApp_Preferences.h>
|
||||||
|
|
||||||
#include <SALOME_LifeCycleCORBA.hxx>
|
#include <SALOME_LifeCycleCORBA.hxx>
|
||||||
#include <SALOME_ListIO.hxx>
|
// #include <SALOME_ListIO.hxx>
|
||||||
#include <SALOME_ListIteratorOfListIO.hxx>
|
#include <SALOME_ListIteratorOfListIO.hxx>
|
||||||
|
|
||||||
#include <SALOMEDSClient_ClientFactory.hxx>
|
#include <SALOMEDSClient_ClientFactory.hxx>
|
||||||
@ -200,7 +200,8 @@ void GeometryGUI::Modified (bool theIsUpdateActions)
|
|||||||
// purpose : Constructor
|
// purpose : Constructor
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
GeometryGUI::GeometryGUI() :
|
GeometryGUI::GeometryGUI() :
|
||||||
SalomeApp_Module( "GEOM" )
|
SalomeApp_Module( "GEOM" ),
|
||||||
|
myTopLevelIOList()
|
||||||
{
|
{
|
||||||
if ( CORBA::is_nil( myComponentGeom ) )
|
if ( CORBA::is_nil( myComponentGeom ) )
|
||||||
{
|
{
|
||||||
@ -2084,7 +2085,7 @@ void GeometryGUI::onAutoBringToFront()
|
|||||||
bool isAutoBringToFront = SUIT_Session::session()->resourceMgr()->booleanValue( "Geometry", "auto_bring_to_front" );
|
bool isAutoBringToFront = SUIT_Session::session()->resourceMgr()->booleanValue( "Geometry", "auto_bring_to_front" );
|
||||||
if( !isAutoBringToFront )
|
if( !isAutoBringToFront )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SUIT_ViewWindow* SUIT_window = application()->desktop()->activeWindow();
|
SUIT_ViewWindow* SUIT_window = application()->desktop()->activeWindow();
|
||||||
if ( !SUIT_window || SUIT_window->getViewManager()->getType() != OCCViewer_Viewer::Type() )
|
if ( !SUIT_window || SUIT_window->getViewManager()->getType() != OCCViewer_Viewer::Type() )
|
||||||
return;
|
return;
|
||||||
@ -2093,36 +2094,42 @@ void GeometryGUI::onAutoBringToFront()
|
|||||||
if (!appStudy) return;
|
if (!appStudy) return;
|
||||||
|
|
||||||
GEOM_Displayer displayer( appStudy );
|
GEOM_Displayer displayer( appStudy );
|
||||||
|
|
||||||
SALOME_View* window = displayer.GetActiveView();
|
SALOME_View* window = displayer.GetActiveView();
|
||||||
if ( !window ) return;
|
if ( !window ) return;
|
||||||
|
|
||||||
int aMgrId = dynamic_cast< SUIT_ViewModel* >( window )->getViewManager()->getGlobalId();
|
int aMgrId = dynamic_cast< SUIT_ViewModel* >( window )->getViewManager()->getGlobalId();
|
||||||
|
|
||||||
SALOME_ListIO selected;
|
SALOME_ListIO selected;
|
||||||
getApp()->selectionMgr()->selectedObjects( selected );
|
getApp()->selectionMgr()->selectedObjects( selected );
|
||||||
SALOME_ListIO allObjects;
|
if (!myTopLevelIOList.IsEmpty())
|
||||||
window->GetVisible( allObjects );
|
{
|
||||||
|
for( SALOME_ListIteratorOfListIO It( myTopLevelIOList ); It.More(); It.Next() )
|
||||||
for ( SALOME_ListIteratorOfListIO It( allObjects ); It.More(); It.Next() ) {
|
{
|
||||||
Handle( SALOME_InteractiveObject ) io = It.Value();
|
Handle( SALOME_InteractiveObject ) io = It.Value();
|
||||||
bool isSelected = false;
|
bool isSelected = false;
|
||||||
for( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
|
for( SALOME_ListIteratorOfListIO It_sel( selected ); It_sel.More(); It_sel.Next() )
|
||||||
Handle( SALOME_InteractiveObject ) ioSelected = It.Value();
|
{
|
||||||
if( io->isSame( ioSelected ) )
|
Handle( SALOME_InteractiveObject ) sel_io = It_sel.Value();
|
||||||
isSelected = true;
|
if( io->isSame( sel_io ) )
|
||||||
}
|
isSelected = true;
|
||||||
QVariant v = appStudy->getObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::TopLevel ), QVariant() );
|
}
|
||||||
bool isTopLevel = v.isValid() ? v.toBool() : false;
|
if (!isSelected && appStudy->findObjectByEntry(io->getEntry()))
|
||||||
if( isSelected && !isTopLevel ) {
|
{
|
||||||
appStudy->setObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::TopLevel ), true );
|
appStudy->setObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::TopLevel ), false );
|
||||||
if ( window->isVisible( io ) ) displayer.Redisplay( io, false );
|
if ( window->isVisible( io ) ) displayer.Redisplay( io, false );
|
||||||
}
|
}
|
||||||
else if( !isSelected ) {
|
|
||||||
appStudy->setObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::TopLevel ), false );
|
|
||||||
if ( window->isVisible( io ) ) displayer.Redisplay( io, false );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
myTopLevelIOList.Assign(selected);
|
||||||
|
for( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() )
|
||||||
|
{
|
||||||
|
Handle( SALOME_InteractiveObject ) io = It.Value();
|
||||||
|
appStudy->setObjectProperty( aMgrId, io->getEntry(), GEOM::propertyName( GEOM::TopLevel ), true );
|
||||||
|
if ( window->isVisible( io ) ) displayer.Redisplay( io, false );
|
||||||
|
}
|
||||||
|
|
||||||
displayer.UpdateViewer();
|
displayer.UpdateViewer();
|
||||||
GeometryGUI::Modified();
|
GeometryGUI::Modified();
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,8 @@
|
|||||||
#include "SALOMEconfig.h"
|
#include "SALOMEconfig.h"
|
||||||
#include CORBA_CLIENT_HEADER(SALOMEDS)
|
#include CORBA_CLIENT_HEADER(SALOMEDS)
|
||||||
|
|
||||||
|
#include <SALOME_ListIO.hxx>
|
||||||
|
|
||||||
class QDialog;
|
class QDialog;
|
||||||
class QMenu;
|
class QMenu;
|
||||||
class QAction;
|
class QAction;
|
||||||
@ -231,6 +233,8 @@ private:
|
|||||||
int myLocalSelectionMode; //Select Only
|
int myLocalSelectionMode; //Select Only
|
||||||
|
|
||||||
GEOMGUI_CreationInfoWdg* myCreationInfoWdg;
|
GEOMGUI_CreationInfoWdg* myCreationInfoWdg;
|
||||||
|
|
||||||
|
SALOME_ListIO myTopLevelIOList;
|
||||||
|
|
||||||
friend class DisplayGUI;
|
friend class DisplayGUI;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user