summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJani Honkonen <jani.honkonen@digia.com>2012-08-06 12:02:51 +0300
committerQt by Nokia <qt-info@nokia.com>2012-08-27 10:27:30 +0200
commit547a1bea492954d828aa0798be93384669812489 (patch)
tree82805efa24f9f454830a19f83a0c52ed835e4819 /src
parent2ef52ca12416baa96feb64e02186aae04f883a12 (diff)
Fix limitting shortcuts to keypad only
The Qt::KeypadModifier modifier is internally masked away from all shortcuts. So it is not possible to set a keypad only shortcut. Changed the implementation so that first a full keysequence match is searched. Then if no match is found the same sequence is tried without the keypad modifer. Added a autotest for this also to cover the basic use cases relating to this. Task-number: QTBUG-20191 Change-Id: Ibe7740c705fd0ab1eece4809b9a0b48882172933 Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qshortcutmap.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp
index 474fb07566..04a16c57ff 100644
--- a/src/gui/kernel/qshortcutmap.cpp
+++ b/src/gui/kernel/qshortcutmap.cpp
@@ -381,6 +381,12 @@ QKeySequence::SequenceMatch QShortcutMap::nextState(QKeyEvent *e)
d->identicals.resize(0);
result = find(e);
+ if (result == QKeySequence::NoMatch && (e->modifiers() & Qt::KeypadModifier)) {
+ // Try to find a match without keypad modifier
+ QKeyEvent event = *e;
+ event.setModifiers(e->modifiers() & ~Qt::KeypadModifier);
+ result = find(&event);
+ }
if (result == QKeySequence::NoMatch && e->modifiers() & Qt::ShiftModifier) {
// If Shift + Key_Backtab, also try Shift + Qt::Key_Tab
if (e->key() == Qt::Key_Backtab) {
@@ -570,8 +576,7 @@ void QShortcutMap::createNewSequences(QKeyEvent *e, QVector<QKeySequence> &ksl)
curKsl.setKey(0, 2);
curKsl.setKey(0, 3);
}
- // Filtering keycode here with 0xdfffffff to ignore the Keypad modifier
- curKsl.setKey(possibleKeys.at(pkNum) & 0xdfffffff, index);
+ curKsl.setKey(possibleKeys.at(pkNum), index);
}
}
}