diff options
Diffstat (limited to 'src/quicktemplates/qquickmenu.cpp')
| -rw-r--r-- | src/quicktemplates/qquickmenu.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/quicktemplates/qquickmenu.cpp b/src/quicktemplates/qquickmenu.cpp index e73a6e57a0..d46a2a862f 100644 --- a/src/quicktemplates/qquickmenu.cpp +++ b/src/quicktemplates/qquickmenu.cpp @@ -1538,6 +1538,28 @@ void QQuickMenu::keyPressEvent(QKeyEvent *event) default: break; } + +#if QT_CONFIG(shortcut) + if (event->modifiers() == Qt::NoModifier) { + for (int i = 0; i < count(); ++i) { + QQuickAbstractButton *item = qobject_cast<QQuickAbstractButton*>(d->itemAt(i)); + if (!item) + continue; + const QKeySequence keySequence = QKeySequence::mnemonic(item->text()); + if (keySequence.isEmpty()) + continue; + // Have to simulate click on the item since + // QQuickAbstractButton::click() is introduced in Qt-6.8 + if (keySequence[0].key() == event->key() && item->isEnabled()) { + auto *p = QQuickAbstractButtonPrivate::get(item); + const QPointF eventPos(p->width / 2, p->height / 2); + p->handlePress(eventPos, 0); + p->handleRelease(eventPos, 0); + break; + } + } + } +#endif } void QQuickMenu::timerEvent(QTimerEvent *event) |
