Salome HOME
*** empty log message ***
[modules/gui.git] / src / SalomeApp / SalomeApp_Application.cxx
index 0593e108507560dde6be8aa2fdbe99e35eaad4ad..40f68ee2a744e00dc8c4e612a38a0b96f211365d 100644 (file)
@@ -18,6 +18,7 @@
 #include "SalomeApp_EventFilter.h"
 #include "SalomeApp_WidgetContainer.h"
 #include "SalomeApp_ModuleDlg.h"
+#include "SalomeApp_OBFilter.h"
 
 #include <LogWindow.h>
 
@@ -278,12 +279,18 @@ void SalomeApp_Application::createActions()
   int newWinMenu = createMenu( tr( "MEN_DESK_NEWWINDOW" ), windowMenu, -1, 0 );
   createMenu( separator(), windowMenu, -1, 1 );
 
+  QMap<int, int> accelMap;
+  accelMap[NewGLViewId]  = ALT+Key_G;
+  accelMap[NewPlot2dId]  = ALT+Key_P;
+  accelMap[NewOCCViewId] = ALT+Key_O;
+  accelMap[NewVTKViewId] = ALT+Key_K;
+
   for ( int id = NewGLViewId; id <= NewVTKViewId; id++ )
   {
     QAction* a = createAction( id, tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ), QIconSet(), 
-                                                      tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ),
-                                                      tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ),
-                                                      0, desk, false, this, SLOT( onNewWindow() ) );
+                              tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ),
+                              tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ),
+                              accelMap.contains( id ) ? accelMap[id] : 0, desk, false, this, SLOT( onNewWindow() ) );
     createMenu( a, newWinMenu, -1 );
   }
 
@@ -546,7 +553,9 @@ void SalomeApp_Application::removeWindow( const int flag, const int studyId )
       sId = activeStudy()->id();
   }
 
+  QWidget* wid = myWindows[flag]->widget( sId );
   myWindows[flag]->remove( sId );
+  delete wid;
 
   setWindowShown( flag, !myWindows[flag]->isEmpty() );
 }
@@ -700,8 +709,6 @@ void SalomeApp_Application::onStudyClosed( SUIT_Study* )
   emit studyClosed();
 
   activateModule( "" );
-  if ( objectBrowser() != 0 )
-    objectBrowser()->setRootObject( 0 );
 
   saveWindowsGeometry();
 }
@@ -731,10 +738,11 @@ QWidget* SalomeApp_Application::createWindow( const int flag )
   if ( flag == WT_ObjectBrowser )
   {
     OB_Browser* ob = new OB_Browser( desktop() );
-
+    ob->setAutoUpdate( true );
+    ob->setAutoOpenLevel( 1 );
     ob->setCaption( tr( "OBJECT_BROWSER" ) );
     ob->resize( OBJECT_BROWSER_WIDTH, ob->height() );
-    ob->setAutoUpdate( true );
+    ob->setFilter( new SalomeApp_OBFilter( selectionMgr() ) );
 
     // Create OBSelector
     new SalomeApp_OBSelector( ob, mySelMgr );