summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-09 17:05:59 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-10 12:16:57 +0200
commit5db69cb5dee4e5e3952b29b350e8d24f60ad0d5a (patch)
treedd63b0c636e900bcbc620349e59d7a48d40a0fe6 /src/plugins/platforms/cocoa
parent7917f9b7f54b5fe574adc6e092a7562b1f0be4fb (diff)
macOS: Merge keySequenceToKeyEqivalent into call site
Change-Id: Iae33f627ad6abfc9bbba9b098417bd13caee00f8 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenuitem.mm30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.mm b/src/plugins/platforms/cocoa/qcocoamenuitem.mm
index c9d606aafe..39a124ea44 100644
--- a/src/plugins/platforms/cocoa/qcocoamenuitem.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenuitem.mm
@@ -80,21 +80,6 @@ QString qt_mac_applicationmenu_string(int type)
}
}
-#ifndef QT_NO_SHORTCUT
-// return an autoreleased string given a QKeySequence (currently only looks at the first one).
-NSString *keySequenceToKeyEqivalent(const QKeySequence &accel)
-{
- quint32 accel_key = (accel[0] & ~Qt::MODIFIER_MASK);
- QChar cocoa_key = QCocoaKeyMapper::toCocoaKey(Qt::Key(accel_key));
- if (cocoa_key.isNull())
- cocoa_key = QChar(accel_key).toLower().unicode();
- // Similar to qt_mac_removePrivateUnicode change the delete key so the symbol is correctly seen in native menubar
- if (cocoa_key.unicode() == NSDeleteFunctionKey)
- cocoa_key = NSDeleteCharacter;
- return QStringView{&cocoa_key, 1}.toNSString();
-}
-#endif
-
QCocoaMenuItem::QCocoaMenuItem() :
m_native(nil),
m_itemView(nil),
@@ -368,8 +353,19 @@ NSMenuItem *QCocoaMenuItem::sync()
#ifndef QT_NO_SHORTCUT
if (accel.count() == 1) {
- m_native.keyEquivalent = keySequenceToKeyEqivalent(accel);
- auto modifiers = Qt::KeyboardModifiers(accel[0] & Qt::KeyboardModifierMask);
+ auto shortcut = accel[0];
+ auto key = Qt::Key(shortcut & ~Qt::KeyboardModifierMask);
+ auto modifiers = Qt::KeyboardModifiers(shortcut & Qt::KeyboardModifierMask);
+
+ QChar cocoaKey = QCocoaKeyMapper::toCocoaKey(key);
+ if (cocoaKey.isNull())
+ cocoaKey = QChar(key).toLower().unicode();
+ // Similar to qt_mac_removePrivateUnicode change the delete key,
+ // so the symbol is correctly seen in native menu bar.
+ if (cocoaKey.unicode() == NSDeleteFunctionKey)
+ cocoaKey = NSDeleteCharacter;
+
+ m_native.keyEquivalent = QStringView(&cocoaKey, 1).toNSString();
m_native.keyEquivalentModifierMask = QCocoaKeyMapper::toCocoaModifiers(modifiers);
} else
#endif