qiostextresponder: Add support for ReturnKeyType

Change-Id: Ic9212468fb41d8042a345267ae69c95e0d9b4cf2
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
This commit is contained in:
Kai Uwe Broulik 2015-03-30 17:05:40 +02:00
parent d47294bec7
commit 921b22e5ce
2 changed files with 29 additions and 6 deletions

View File

@ -579,7 +579,7 @@ void QIOSInputContext::focusWindowChanged(QWindow *focusWindow)
void QIOSInputContext::update(Qt::InputMethodQueries updatedProperties)
{
// Mask for properties that we are interested in and see if any of them changed
updatedProperties &= (Qt::ImEnabled | Qt::ImHints | Qt::ImQueryInput | Qt::ImPlatformData);
updatedProperties &= (Qt::ImEnabled | Qt::ImHints | Qt::ImQueryInput | Qt::ImReturnKeyType | Qt::ImPlatformData);
qImDebug() << "fw =" << qApp->focusWindow() << "fo =" << qApp->focusObject();

View File

@ -170,9 +170,31 @@
QVariantMap platformData = m_configuredImeState->value(Qt::ImPlatformData).toMap();
Qt::InputMethodHints hints = Qt::InputMethodHints(m_configuredImeState->value(Qt::ImHints).toUInt());
self.returnKeyType = platformData.value(kImePlatformDataReturnKeyType).isValid() ?
UIReturnKeyType(platformData.value(kImePlatformDataReturnKeyType).toInt()) :
(hints & Qt::ImhMultiLine) ? UIReturnKeyDefault : UIReturnKeyDone;
Qt::ReturnKeyType returnKeyType = Qt::ReturnKeyType(m_configuredImeState->value(Qt::ImReturnKeyType).toUInt());
switch (returnKeyType) {
case Qt::ReturnKeyEnter:
self.returnKeyType = UIReturnKeyDefault;
break;
case Qt::ReturnKeyDone:
self.returnKeyType = UIReturnKeyDone;
break;
case Qt::ReturnKeyGo:
self.returnKeyType = UIReturnKeyGo;
break;
case Qt::ReturnKeySend:
self.returnKeyType = UIReturnKeySend;
break;
case Qt::ReturnKeySearch:
self.returnKeyType = UIReturnKeySearch;
break;
case Qt::ReturnKeyNext:
self.returnKeyType = UIReturnKeyNext;
break;
default:
self.returnKeyType = (hints & Qt::ImhMultiLine) ? UIReturnKeyDefault : UIReturnKeyDone;
break;
}
self.secureTextEntry = BOOL(hints & Qt::ImhHiddenText);
self.autocorrectionType = (hints & Qt::ImhNoPredictiveText) ?
@ -231,7 +253,7 @@
}
// Based on what we set up in initWithInputContext above
updatedProperties &= (Qt::ImHints | Qt::ImPlatformData);
updatedProperties &= (Qt::ImHints | Qt::ImReturnKeyType | Qt::ImPlatformData);
if (!updatedProperties)
return NO;
@ -657,7 +679,8 @@
[self sendEventToFocusObject:press];
[self sendEventToFocusObject:release];
if (self.returnKeyType == UIReturnKeyDone)
if (self.returnKeyType == UIReturnKeyDone || self.returnKeyType == UIReturnKeyGo
|| self.returnKeyType == UIReturnKeySend || self.returnKeyType == UIReturnKeySearch)
[self resignFirstResponder];
return;