Skip to content

Commit

Permalink
QMenu: Accept accelerators typed on keypad
Browse files Browse the repository at this point in the history
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
Pick-to: 6.8
Change-Id: I0fa63b0c5f23823c61e159fcc72f7245215f8aae
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit ca4334b)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
  • Loading branch information
michaelweghorn authored and Qt Cherry-pick Bot committed Dec 13, 2024
1 parent c437c6a commit b5ba125
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/widgets/widgets/qmenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()) {
Expand Down

0 comments on commit b5ba125

Please sign in to comment.