Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / XGUI / XGUI_MainWindow.cpp
index 02971608f331e87376ad1045919c1a0643899ecf..1400fc0ccc7f4c502b092cbdae6bc5b93cd4532b 100644 (file)
@@ -13,6 +13,8 @@
 #include <QAction>
 #include <QDockWidget>
 #include <QApplication>
+#include <QTimer>
+#include <QCloseEvent>
 
 XGUI_MainWindow::XGUI_MainWindow(QWidget* parent)
     : QMainWindow(parent), 
@@ -40,11 +42,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 +135,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 +173,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)
@@ -194,4 +198,10 @@ void XGUI_MainWindow::onViewActivated(QMdiSubWindow* theSubWnd)
     if (aAct->isCheckable())
       aAct->setChecked(aAct->text() == aWndTitle);
   }
-}
\ No newline at end of file
+}
+
+void XGUI_MainWindow::closeEvent(QCloseEvent * event)
+{
+  emit exitKeySequence();
+  event->ignore();
+}