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