diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 21adb03f5be0959f900cccdc2270c89cfed557b4..0decf8aabc4421b4c9752a17fd51430d112f1d08 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 da4bca7efd9452a5e149763698ab1b15a94f08a8..a296741aa05c307caba7b58b876929891216877f 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); }