From b982385bcf1fce697fee9da5ebcb41bf28ecd8e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 7 Jul 2020 20:34:49 +0200 Subject: [PATCH] macOS: Simplify QCocoaKeyMapper::fromCocoaModifiers Change-Id: I6c25c1cfd4253d13623b2706c3b93632711fc577 Reviewed-by: Volker Hilsheimer --- .../platforms/cocoa/qcocoakeymapper.mm | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/plugins/platforms/cocoa/qcocoakeymapper.mm b/src/plugins/platforms/cocoa/qcocoakeymapper.mm index bb8787bf4a..97f1df151b 100644 --- a/src/plugins/platforms/cocoa/qcocoakeymapper.mm +++ b/src/plugins/platforms/cocoa/qcocoakeymapper.mm @@ -65,21 +65,23 @@ static Qt::KeyboardModifiers swapModifiersIfNeeded(const Qt::KeyboardModifiers m return swappedModifiers; } +static constexpr std::tuple cocoaModifierMap[] = { + { NSEventModifierFlagShift, Qt::ShiftModifier }, + { NSEventModifierFlagControl, Qt::ControlModifier }, + { NSEventModifierFlagCommand, Qt::MetaModifier }, + { NSEventModifierFlagOption, Qt::AltModifier }, + { NSEventModifierFlagNumericPad, Qt::KeypadModifier } +}; + Qt::KeyboardModifiers QCocoaKeyMapper::fromCocoaModifiers(NSEventModifierFlags cocoaModifiers) { - const bool dontSwapCtrlAndMeta = qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta); - Qt::KeyboardModifiers qtMods =Qt::NoModifier; - if (cocoaModifiers & NSEventModifierFlagShift) - qtMods |= Qt::ShiftModifier; - if (cocoaModifiers & NSEventModifierFlagControl) - qtMods |= dontSwapCtrlAndMeta ? Qt::ControlModifier : Qt::MetaModifier; - if (cocoaModifiers & NSEventModifierFlagOption) - qtMods |= Qt::AltModifier; - if (cocoaModifiers & NSEventModifierFlagCommand) - qtMods |= dontSwapCtrlAndMeta ? Qt::MetaModifier : Qt::ControlModifier; - if (cocoaModifiers & NSEventModifierFlagNumericPad) - qtMods |= Qt::KeypadModifier; - return qtMods; + Qt::KeyboardModifiers qtModifiers = Qt::NoModifier; + for (const auto &[cocoaModifier, qtModifier] : cocoaModifierMap) { + if (cocoaModifiers & cocoaModifier) + qtModifiers |= qtModifier; + } + + return swapModifiersIfNeeded(qtModifiers); } static constexpr std::tuple carbonModifierMap[] = {