From 1a77c287dffaddda1b32605e477d6f6e290f7f7a Mon Sep 17 00:00:00 2001 From: mae <qt-info@nokia.com> Date: Mon, 17 May 2010 11:39:42 +0200 Subject: [PATCH] Workaround for QTCREATORBUG-72 (multiple shortcuts) This fixes the Ctrl+W vs. Ctrl+F4 for close on MS-Windows by introducing Ctrl+F4 as an alternative shortcut. Reviewed-by: con --- src/plugins/coreplugin/coreconstants.h | 1 + .../coreplugin/editormanager/editormanager.cpp | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 21adb03f5be..0decf8aabc4 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -141,6 +141,7 @@ const char * const GOTO_OTHER_SPLIT = "QtCreator.GotoOtherSplit"; const char * const SAVEASDEFAULT = "QtCreator.SaveAsDefaultLayout"; const char * const RESTOREDEFAULT = "QtCreator.RestoreDefaultLayout"; const char * const CLOSE = "QtCreator.Close"; +const char * const CLOSE_ALTERNATIVE = "QtCreator.Close_Alternative"; // temporary, see QTCREATORBUG-72 const char * const CLOSEALL = "QtCreator.CloseAll"; const char * const CLOSEOTHERS = "QtCreator.CloseOthers"; const char * const GOTONEXT = "QtCreator.GotoNext"; diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index da4bca7efd9..a296741aa05 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -67,6 +67,7 @@ #include <QtCore/QSettings> #include <QtGui/QAction> +#include <QtGui/QShortcut> #include <QtGui/QApplication> #include <QtGui/QFileDialog> #include <QtGui/QLayout> @@ -311,16 +312,21 @@ EditorManager::EditorManager(ICore *core, QWidget *parent) : // Close Action cmd = am->registerAction(m_d->m_closeCurrentEditorAction, Constants::CLOSE, editManagerContext); -#ifdef Q_WS_WIN - cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+F4"))); -#else cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+W"))); -#endif cmd->setAttribute(Core::Command::CA_UpdateText); cmd->setDefaultText(m_d->m_closeCurrentEditorAction->text()); mfile->addAction(cmd, Constants::G_FILE_CLOSE); connect(m_d->m_closeCurrentEditorAction, SIGNAL(triggered()), this, SLOT(closeEditor())); +#ifdef Q_WS_WIN + // workaround for QTCREATORBUG-72 + QShortcut *sc = new QShortcut(parent); + cmd = am->registerShortcut(sc, Constants::CLOSE_ALTERNATIVE, editManagerContext); + cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+F4"))); + cmd->setDefaultText(EditorManager::tr("Close")); + connect(sc, SIGNAL(activated()), this, SLOT(closeEditor())); +#endif + // Close All Action cmd = am->registerAction(m_d->m_closeAllEditorsAction, Constants::CLOSEALL, editManagerContext); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+W"))); @@ -733,6 +739,8 @@ void EditorManager::closeOtherEditors() // SLOT connected to action void EditorManager::closeEditor() { + if (!m_d->m_currentEditor) + return; addCurrentPositionToNavigationHistory(); closeEditor(m_d->m_currentEditor); } -- GitLab