QMenu: Accept accelerators typed on keypad
Add Qt::KeypadModifier (and the combination with Qt::AltModifier) to the modifiers that may be set in a key event in order to trigger a menu action via its accelerator. Otherwise, an action that has a number set as the accelerator (e.g. using text "&1 Exit"), cannot be triggered by typing the corresponding number on the keypad. Fixes: QTBUG-73390 Change-Id: I0fa63b0c5f23823c61e159fcc72f7245215f8aae Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit ca4334bc966c7e5f9997f98b83afe37eb8b1d3ba) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit b5ba125fa07c71dfbd5ce0d62b946c232106f91b)
This commit is contained in:
parent
595a557776
commit
5c36926f6b
@ -3363,8 +3363,11 @@ void QMenu::keyPressEvent(QKeyEvent *e)
|
||||
}
|
||||
|
||||
if (!key_consumed) { // send to menu bar
|
||||
if ((!e->modifiers() || e->modifiers() == Qt::AltModifier || e->modifiers() == Qt::ShiftModifier) &&
|
||||
e->text().size()==1) {
|
||||
const Qt::KeyboardModifiers modifiers = e->modifiers();
|
||||
if ((!modifiers || modifiers == Qt::AltModifier || modifiers == Qt::ShiftModifier
|
||||
|| modifiers == Qt::KeypadModifier
|
||||
|| modifiers == (Qt::KeypadModifier | Qt::AltModifier))
|
||||
&& e->text().size() == 1) {
|
||||
bool activateAction = false;
|
||||
QAction *nextAction = nullptr;
|
||||
if (style()->styleHint(QStyle::SH_Menu_KeyboardSearch, nullptr, this) && !e->modifiers()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user