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>
This commit is contained in:
Eike Ziller
2013-05-07 11:39:45 +02:00
parent 72ad68e913
commit 5c8f46d25d
4 changed files with 14 additions and 5 deletions

View File

@@ -278,6 +278,7 @@ Command *ActionManager::registerShortcut(QShortcut *shortcut, const Id &id, cons
shortcut->setEnabled(false); shortcut->setEnabled(false);
shortcut->setObjectName(id.toString()); shortcut->setObjectName(id.toString());
shortcut->setParent(ICore::mainWindow()); shortcut->setParent(ICore::mainWindow());
shortcut->setContext(Qt::ApplicationShortcut);
sc->setShortcut(shortcut); sc->setShortcut(shortcut);
sc->setScriptable(scriptable); sc->setScriptable(scriptable);
sc->setContext(context); sc->setContext(context);

View File

@@ -165,6 +165,7 @@ void ModeManager::activateModeType(Id type)
void ModeManager::slotActivateMode(int id) void ModeManager::slotActivateMode(int id)
{ {
m_instance->activateMode(Id::fromUniqueIdentifier(id)); m_instance->activateMode(Id::fromUniqueIdentifier(id));
ICore::raiseWindow(d->m_modeStack);
} }
void ModeManager::activateMode(Id id) void ModeManager::activateMode(Id id)

View File

@@ -30,6 +30,7 @@
#include "navigationwidget.h" #include "navigationwidget.h"
#include "navigationsubwidget.h" #include "navigationsubwidget.h"
#include "icontext.h" #include "icontext.h"
#include "icore.h"
#include "coreconstants.h" #include "coreconstants.h"
#include "inavigationwidgetfactory.h" #include "inavigationwidgetfactory.h"
#include "modemanager.h" #include "modemanager.h"
@@ -266,6 +267,7 @@ void NavigationWidget::activateSubWidget(const Id &factoryId)
foreach (Internal::NavigationSubWidget *subWidget, d->m_subWidgets) { foreach (Internal::NavigationSubWidget *subWidget, d->m_subWidgets) {
if (subWidget->factory()->id() == factoryId) { if (subWidget->factory()->id() == factoryId) {
subWidget->setFocusWidget(); subWidget->setFocusWidget();
ICore::raiseWindow(this);
return; return;
} }
} }
@@ -274,6 +276,7 @@ void NavigationWidget::activateSubWidget(const Id &factoryId)
if (index >= 0) { if (index >= 0) {
d->m_subWidgets.first()->setFactoryIndex(index); d->m_subWidgets.first()->setFactoryIndex(index);
d->m_subWidgets.first()->setFocusWidget(); d->m_subWidgets.first()->setFocusWidget();
ICore::raiseWindow(this);
} }
} }

View File

@@ -275,7 +275,7 @@ void OutputPaneManager::init()
Command *cmd = ActionManager::registerAction(action, id, globalContext); Command *cmd = ActionManager::registerAction(action, id, globalContext);
mpanes->addAction(cmd, "Coreplugin.OutputPane.PanesGroup"); mpanes->addAction(cmd, "Coreplugin.OutputPane.PanesGroup");
m_actions.append(cmd->action()); m_actions.append(action);
m_ids.append(id); m_ids.append(id);
cmd->setDefaultKeySequence(QKeySequence(paneShortCut(shortcutNumber))); cmd->setDefaultKeySequence(QKeySequence(paneShortCut(shortcutNumber)));
@@ -289,7 +289,7 @@ void OutputPaneManager::init()
bool visible = outPane->priorityInStatusBar() != -1; bool visible = outPane->priorityInStatusBar() != -1;
button->setVisible(visible); 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() m_titleLabel->setMinimumWidth(minTitleWidth + m_titleLabel->contentsMargins().left()
@@ -312,10 +312,12 @@ void OutputPaneManager::shortcutTriggered()
// then just give it focus. // then just give it focus.
int current = currentIndex(); int current = currentIndex();
if (OutputPanePlaceHolder::isCurrentVisible() && current == idx) { if (OutputPanePlaceHolder::isCurrentVisible() && current == idx) {
if (!outputPane->hasFocus() && outputPane->canFocus()) if (!outputPane->hasFocus() && outputPane->canFocus()) {
outputPane->setFocus(); outputPane->setFocus();
else ICore::raiseWindow(m_outputWidgetPane);
} else {
slotHide(); slotHide();
}
} else { } else {
// Else do the same as clicking on the button does. // Else do the same as clicking on the button does.
buttonTriggered(idx); buttonTriggered(idx);
@@ -476,8 +478,10 @@ void OutputPaneManager::showPage(int idx, int flags)
ensurePageVisible(idx); ensurePageVisible(idx);
IOutputPane *out = m_panes.at(idx); IOutputPane *out = m_panes.at(idx);
out->visibilityChanged(true); out->visibilityChanged(true);
if (flags & IOutputPane::WithFocus && out->canFocus()) if (flags & IOutputPane::WithFocus && out->canFocus()) {
out->setFocus(); out->setFocus();
ICore::raiseWindow(m_outputWidgetPane);
}
if (flags & IOutputPane::EnsureSizeHint) if (flags & IOutputPane::EnsureSizeHint)
ph->ensureSizeHintAsMinimum(); ph->ensureSizeHintAsMinimum();