Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / XGUI / XGUI_MainWindow.cpp
index 02971608f331e87376ad1045919c1a0643899ecf..4b8c9e0918f1ff863213d116d277b848b610dc39 100644 (file)
@@ -13,6 +13,7 @@
 #include <QAction>
 #include <QDockWidget>
 #include <QApplication>
+#include <QTimer>
 
 XGUI_MainWindow::XGUI_MainWindow(QWidget* parent)
     : QMainWindow(parent), 
@@ -40,11 +41,15 @@ XGUI_MainWindow::XGUI_MainWindow(QWidget* parent)
   aMdiArea->addAction(aAction);
   connect(aAction, SIGNAL(triggered(bool)), this, SLOT(cascadeWindows()));
 
+  aAction = new QAction(aMdiArea);
+  aAction->setSeparator(true);
+  aMdiArea->addAction(aAction);
+
   myViewer = new XGUI_Viewer(this);
   connect(myViewer, SIGNAL(viewCreated(XGUI_ViewWindow*)), 
           this, SLOT(onViewCreated(XGUI_ViewWindow*)));
   connect(myViewer, SIGNAL(deleteView(XGUI_ViewWindow*)), 
-          this, SLOT(onViewCreated(XGUI_ViewWindow*)));
+          this, SLOT(onDeleteView(XGUI_ViewWindow*)));
 }
 
 XGUI_MainWindow::~XGUI_MainWindow(void)
@@ -129,13 +134,8 @@ void XGUI_MainWindow::onViewCreated(XGUI_ViewWindow* theWindow)
 {
   QWidget* aSubWindow = theWindow->parentWidget();
   QWidget* aMDIWidget = centralWidget();
-  QAction* aAction;
-  if (aMDIWidget->actions().size() == 3) {
-    aAction = new QAction(aMDIWidget);
-    aAction->setSeparator(true);
-    aMDIWidget->addAction(aAction);
-  }
-  aAction = new QAction(aSubWindow->windowTitle(), aMDIWidget);
+
+  QAction* aAction = new QAction(aSubWindow->windowTitle(), aMDIWidget);
   aAction->setCheckable(true);
   connect(aAction, SIGNAL(triggered(bool)), this, SLOT(activateView()));
   aMDIWidget->addAction(aAction);
@@ -172,15 +172,18 @@ void XGUI_MainWindow::activateView()
   QMdiArea* aMdiArea = static_cast<QMdiArea*>(centralWidget());
 
   QList<QMdiSubWindow*> aWndList = aMdiArea->subWindowList();
+  QMdiSubWindow* aTargetView = 0;
   foreach(QMdiSubWindow* aWnd, aWndList) {
     if (aWnd->windowTitle() == aWndTitle) {
       aWnd->raise();
       aWnd->activateWindow();
-      aWnd->setFocus();
+      aTargetView = aWnd;
       break;
     }
   }
   QApplication::processEvents();
+  if (aTargetView)
+    QTimer::singleShot(20, aTargetView, SLOT(setFocus()));
 }
 
 void XGUI_MainWindow::onViewActivated(QMdiSubWindow* theSubWnd)