From a10dc593b088f20abbdd24cf65335737069f2f06 Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Wed, 1 Apr 2009 18:18:26 +0200
Subject: [PATCH] Switching to the output mode now always gives focus to the
 output mode.

Annoying
---
 src/plugins/coreplugin/mainwindow.cpp | 14 ++++++++++++++
 src/plugins/coreplugin/mainwindow.h   |  2 ++
 2 files changed, 16 insertions(+)

diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 9c489e7b96a..543111816b1 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -63,6 +63,7 @@
 #include "editormanager/ieditorfactory.h"
 #include "baseview.h"
 #include "basefilewizard.h"
+#include "ioutputpane.h"
 
 #include <coreplugin/findplaceholder.h>
 #include <utils/pathchooser.h>
@@ -302,6 +303,9 @@ bool MainWindow::init(QString *errorMessage)
     outputModeWidget->layout()->addWidget(new Core::FindToolBarPlaceHolder(m_outputMode));
     outputModeWidget->setFocusProxy(oph);
 
+    connect(m_modeManager, SIGNAL(currentModeChanged(Core::IMode*)),
+            this, SLOT(modeChanged(Core::IMode*)), Qt::QueuedConnection);
+
     m_outputMode->setContext(m_globalContext);
     pm->addObject(m_outputMode);
     pm->addObject(m_generalSettings);
@@ -317,6 +321,16 @@ bool MainWindow::init(QString *errorMessage)
     return true;
 }
 
+void MainWindow::modeChanged(Core::IMode *mode)
+{
+    if (mode == m_outputMode) {        
+        int idx = OutputPaneManager::instance()->m_widgetComboBox->itemData(OutputPaneManager::instance()->m_widgetComboBox->currentIndex()).toInt();
+        IOutputPane *out = OutputPaneManager::instance()->m_pageMap.value(idx);
+        if (out && out->canFocus())
+            out->setFocus();
+    }
+}
+
 void MainWindow::extensionsInitialized()
 {
     m_editorManager->init();
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index ea237f53bac..c28984e98f6 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -64,6 +64,7 @@ class UniqueIDManager;
 class VariableManager;
 class VCSManager;
 class ViewManagerInterface;
+class IMode;
 
 namespace Internal {
 
@@ -153,6 +154,7 @@ private slots:
     void updateFocusWidget(QWidget *old, QWidget *now);
     void setSidebarVisible(bool visible);
     void destroyVersionDialog();
+    void modeChanged(Core::IMode *mode);
 
 private:
     void updateContextObject(IContext *context);
-- 
GitLab