From 3bb71243d431811673b442461b3cf573f7faa32e Mon Sep 17 00:00:00 2001 From: mae <qt-info@nokia.com> Date: Wed, 16 Dec 2009 12:12:35 +0100 Subject: [PATCH] Fix ambiguous shortcut problems The dummy shortcut eater did not always work, we sometimes do have mutual exclusive shortcuts in the same context. The current solution is simpler: ignore text input when the control modifier is used. This seems to be in line with other toolkits and applications. Done with: thorbjorn --- src/plugins/coreplugin/actionmanager/command.cpp | 9 +-------- src/plugins/coreplugin/actionmanager/command_p.h | 1 - src/plugins/texteditor/basetexteditor.cpp | 2 +- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/plugins/coreplugin/actionmanager/command.cpp b/src/plugins/coreplugin/actionmanager/command.cpp index a9c22e2c112..6e84d29c554 100644 --- a/src/plugins/coreplugin/actionmanager/command.cpp +++ b/src/plugins/coreplugin/actionmanager/command.cpp @@ -425,11 +425,8 @@ QKeySequence Action::keySequence() const OverrideableAction::OverrideableAction(int id) : Action(id), m_currentAction(0), m_active(false), - m_contextInitialized(false), - m_dummyShortcutEater(this) + m_contextInitialized(false) { - Core::ICore::instance()->mainWindow()->addAction(&m_dummyShortcutEater); - m_dummyShortcutEater.setEnabled(false); } void OverrideableAction::setAction(QAction *action) @@ -473,7 +470,6 @@ bool OverrideableAction::setCurrentContext(const QList<int> &context) if (hasAttribute(CA_Hide)) m_action->setVisible(false); m_action->setEnabled(false); - m_dummyShortcutEater.setEnabled(false); m_active = false; return false; } @@ -527,9 +523,6 @@ void OverrideableAction::actionChanged() m_action->setEnabled(m_currentAction->isEnabled()); m_action->setVisible(m_currentAction->isVisible()); - - m_dummyShortcutEater.setShortcuts(m_action->shortcuts()); - m_dummyShortcutEater.setEnabled(m_action->isVisible() && !m_action->isEnabled()); } bool OverrideableAction::isActive() const diff --git a/src/plugins/coreplugin/actionmanager/command_p.h b/src/plugins/coreplugin/actionmanager/command_p.h index 1c89fd7b7fb..176866dfeeb 100644 --- a/src/plugins/coreplugin/actionmanager/command_p.h +++ b/src/plugins/coreplugin/actionmanager/command_p.h @@ -153,7 +153,6 @@ private: QMap<int, QPointer<QAction> > m_contextActionMap; bool m_active; bool m_contextInitialized; - QAction m_dummyShortcutEater; }; } // namespace Internal diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 29f41aa4bb2..531e25f7a7c 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -1176,7 +1176,7 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e) if (ro || e->text().isEmpty() || !e->text().at(0).isPrint()) { QPlainTextEdit::keyPressEvent(e); - } else { + } else if ((e->modifiers() & Qt::ControlModifier) != Qt::ControlModifier){ QTextCursor cursor = textCursor(); QString text = e->text(); QString autoText = autoComplete(cursor, text); -- GitLab