diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2020-07-07 20:34:49 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2020-07-08 01:09:39 +0200 |
commit | b982385bcf1fce697fee9da5ebcb41bf28ecd8e9 (patch) | |
tree | 001394a3ea906780fded09f3b1d8bc0617d88bb0 | |
parent | f67fe01ac667e1b416fb277f9ab5fd857790cc2d (diff) |
macOS: Simplify QCocoaKeyMapper::fromCocoaModifiers
Change-Id: I6c25c1cfd4253d13623b2706c3b93632711fc577
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoakeymapper.mm | 28 |
1 files 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<NSEventModifierFlags, Qt::KeyboardModifier> 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<int, Qt::KeyboardModifier> carbonModifierMap[] = { |