summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-07 20:34:49 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-08 01:09:39 +0200
commitb982385bcf1fce697fee9da5ebcb41bf28ecd8e9 (patch)
tree001394a3ea906780fded09f3b1d8bc0617d88bb0
parentf67fe01ac667e1b416fb277f9ab5fd857790cc2d (diff)
macOS: Simplify QCocoaKeyMapper::fromCocoaModifiers
Change-Id: I6c25c1cfd4253d13623b2706c3b93632711fc577 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r--src/plugins/platforms/cocoa/qcocoakeymapper.mm28
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[] = {