aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates/qquickmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quicktemplates/qquickmenu.cpp')
-rw-r--r--src/quicktemplates/qquickmenu.cpp22
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)