diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2020-07-09 17:05:59 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2020-07-10 12:16:57 +0200 |
commit | 5db69cb5dee4e5e3952b29b350e8d24f60ad0d5a (patch) | |
tree | dd63b0c636e900bcbc620349e59d7a48d40a0fe6 /src/plugins/platforms/cocoa | |
parent | 7917f9b7f54b5fe574adc6e092a7562b1f0be4fb (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.mm | 30 |
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 |