macOS: Simplify QCocoaKeyMapper::fromCocoaModifiers

Change-Id: I6c25c1cfd4253d13623b2706c3b93632711fc577
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
bb10
Tor Arne Vestbø 2020-07-07 20:34:49 +02:00
parent f67fe01ac6
commit b982385bcf
1 changed files with 15 additions and 13 deletions

View File

@ -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[] = {