From 5c8f46d25d60dfaf37a32ec5091385a25ab80b5e Mon Sep 17 00:00:00 2001 From: Eike Ziller <eike.ziller@digia.com> Date: Tue, 7 May 2013 11:39:45 +0200 Subject: [PATCH] Make a few more shortcuts/actions raise the main window. Also make registerShortcut set an application shortcut. That is necessary when the user opened a separate editor window. Change-Id: I366044b7acba51daca46a15a302a24b5b8e99cc1 Reviewed-by: David Schulz <david.schulz@digia.com> --- .../coreplugin/actionmanager/actionmanager.cpp | 1 + src/plugins/coreplugin/modemanager.cpp | 1 + src/plugins/coreplugin/navigationwidget.cpp | 3 +++ src/plugins/coreplugin/outputpanemanager.cpp | 14 +++++++++----- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp index 597bc66d28e..2a71ba62972 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp +++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp @@ -278,6 +278,7 @@ Command *ActionManager::registerShortcut(QShortcut *shortcut, const Id &id, cons shortcut->setEnabled(false); shortcut->setObjectName(id.toString()); shortcut->setParent(ICore::mainWindow()); + shortcut->setContext(Qt::ApplicationShortcut); sc->setShortcut(shortcut); sc->setScriptable(scriptable); sc->setContext(context); diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 1925f58d474..21407245332 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -165,6 +165,7 @@ void ModeManager::activateModeType(Id type) void ModeManager::slotActivateMode(int id) { m_instance->activateMode(Id::fromUniqueIdentifier(id)); + ICore::raiseWindow(d->m_modeStack); } void ModeManager::activateMode(Id id) diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index c654f3ff136..d6190771811 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -30,6 +30,7 @@ #include "navigationwidget.h" #include "navigationsubwidget.h" #include "icontext.h" +#include "icore.h" #include "coreconstants.h" #include "inavigationwidgetfactory.h" #include "modemanager.h" @@ -266,6 +267,7 @@ void NavigationWidget::activateSubWidget(const Id &factoryId) foreach (Internal::NavigationSubWidget *subWidget, d->m_subWidgets) { if (subWidget->factory()->id() == factoryId) { subWidget->setFocusWidget(); + ICore::raiseWindow(this); return; } } @@ -274,6 +276,7 @@ void NavigationWidget::activateSubWidget(const Id &factoryId) if (index >= 0) { d->m_subWidgets.first()->setFactoryIndex(index); d->m_subWidgets.first()->setFocusWidget(); + ICore::raiseWindow(this); } } diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp index 55a4f220e17..cd105414cac 100644 --- a/src/plugins/coreplugin/outputpanemanager.cpp +++ b/src/plugins/coreplugin/outputpanemanager.cpp @@ -275,7 +275,7 @@ void OutputPaneManager::init() Command *cmd = ActionManager::registerAction(action, id, globalContext); mpanes->addAction(cmd, "Coreplugin.OutputPane.PanesGroup"); - m_actions.append(cmd->action()); + m_actions.append(action); m_ids.append(id); cmd->setDefaultKeySequence(QKeySequence(paneShortCut(shortcutNumber))); @@ -289,7 +289,7 @@ void OutputPaneManager::init() bool visible = outPane->priorityInStatusBar() != -1; button->setVisible(visible); - connect(cmd->action(), SIGNAL(triggered()), this, SLOT(shortcutTriggered())); + connect(action, SIGNAL(triggered()), this, SLOT(shortcutTriggered())); } m_titleLabel->setMinimumWidth(minTitleWidth + m_titleLabel->contentsMargins().left() @@ -312,10 +312,12 @@ void OutputPaneManager::shortcutTriggered() // then just give it focus. int current = currentIndex(); if (OutputPanePlaceHolder::isCurrentVisible() && current == idx) { - if (!outputPane->hasFocus() && outputPane->canFocus()) + if (!outputPane->hasFocus() && outputPane->canFocus()) { outputPane->setFocus(); - else + ICore::raiseWindow(m_outputWidgetPane); + } else { slotHide(); + } } else { // Else do the same as clicking on the button does. buttonTriggered(idx); @@ -476,8 +478,10 @@ void OutputPaneManager::showPage(int idx, int flags) ensurePageVisible(idx); IOutputPane *out = m_panes.at(idx); out->visibilityChanged(true); - if (flags & IOutputPane::WithFocus && out->canFocus()) + if (flags & IOutputPane::WithFocus && out->canFocus()) { out->setFocus(); + ICore::raiseWindow(m_outputWidgetPane); + } if (flags & IOutputPane::EnsureSizeHint) ph->ensureSizeHintAsMinimum(); -- GitLab