iOS: Pass the text to handleExtendedKeyEvent when known
This will ensure that the QKeyEvent also has this information passed on as appropriate. Pick-to: 6.1 Change-Id: I52436404115b453664b9b3414f8ec4e715dd6a28 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
9a5a2d61c0
commit
5540c9c107
@ -74,7 +74,7 @@ static Qt::KeyboardModifiers swapModifiersIfNeeded(const Qt::KeyboardModifiers m
|
||||
}
|
||||
|
||||
Qt::Key QAppleKeyMapper::fromNSString(Qt::KeyboardModifiers qtModifiers, NSString *characters,
|
||||
NSString *charactersIgnoringModifiers)
|
||||
NSString *charactersIgnoringModifiers, QString &text)
|
||||
{
|
||||
if ([characters isEqualToString:@"\t"]) {
|
||||
if (qtModifiers & Qt::ShiftModifier)
|
||||
@ -93,6 +93,10 @@ Qt::Key QAppleKeyMapper::fromNSString(Qt::KeyboardModifiers qtModifiers, NSStrin
|
||||
} else if ([characters length] != 0) {
|
||||
ch = QChar([characters characterAtIndex:0]);
|
||||
}
|
||||
if (!(qtModifiers & (Qt::ControlModifier | Qt::MetaModifier)) &&
|
||||
(ch.unicode() < 0xf700 || ch.unicode() > 0xf8ff)) {
|
||||
text = QString::fromNSString(characters);
|
||||
}
|
||||
if (!ch.isNull())
|
||||
return Qt::Key(ch.toUpper().unicode());
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ public:
|
||||
static Qt::KeyboardModifiers queryKeyboardModifiers();
|
||||
QList<int> possibleKeys(const QKeyEvent *event) const;
|
||||
static Qt::Key fromNSString(Qt::KeyboardModifiers qtMods, NSString *characters,
|
||||
NSString *charactersIgnoringModifiers);
|
||||
NSString *charactersIgnoringModifiers, QString &text);
|
||||
#ifdef Q_OS_MACOS
|
||||
static Qt::KeyboardModifiers fromCocoaModifiers(NSEventModifierFlags cocoaModifiers);
|
||||
static NSEventModifierFlags toCocoaModifiers(Qt::KeyboardModifiers);
|
||||
|
@ -574,7 +574,7 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
|
||||
QWindowSystemInterface::handleTouchCancelEvent(self.platformWindow->window(), ulong(timestamp * 1000), iosIntegration->touchDevice());
|
||||
}
|
||||
|
||||
- (int)mapPressTypeToKey:(UIPress*)press withModifiers:(Qt::KeyboardModifiers)qtModifiers
|
||||
- (int)mapPressTypeToKey:(UIPress*)press withModifiers:(Qt::KeyboardModifiers)qtModifiers text:(QString &)text
|
||||
{
|
||||
switch (press.type) {
|
||||
case UIPressTypeUpArrow: return Qt::Key_Up;
|
||||
@ -592,7 +592,7 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
|
||||
if (key != Qt::Key_unknown)
|
||||
return key;
|
||||
return QAppleKeyMapper::fromNSString(qtModifiers, press.key.characters,
|
||||
charactersIgnoringModifiers);
|
||||
charactersIgnoringModifiers, text);
|
||||
}
|
||||
#endif
|
||||
return Qt::Key_unknown;
|
||||
@ -611,11 +611,14 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
|
||||
if (@available(ios 13.4, *))
|
||||
qtModifiers = QAppleKeyMapper::fromUIKitModifiers(press.key.modifierFlags);
|
||||
#endif
|
||||
int key = [self mapPressTypeToKey:press withModifiers:qtModifiers];
|
||||
QString text;
|
||||
int key = [self mapPressTypeToKey:press withModifiers:qtModifiers text:text];
|
||||
if (key == Qt::Key_unknown)
|
||||
continue;
|
||||
if (QWindowSystemInterface::handleKeyEvent(self.platformWindow->window(), type, key, qtModifiers))
|
||||
if (QWindowSystemInterface::handleKeyEvent(self.platformWindow->window(), type, key,
|
||||
qtModifiers, text)) {
|
||||
handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
return handled;
|
||||
|
Loading…
Reference in New Issue
Block a user