summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@digia.com>2014-03-18 15:33:37 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-21 08:41:23 +0100
commit68c80163949fc4c17b84c880c28b345a3a877727 (patch)
tree0d665fcbd12135d34199e30c48a30b732e189f51
parent37ba38b33457412ba55c37cc69dd618ef21bda5b (diff)
iOS: send a Qt::Key_Return when the user hits done/enter
We need to send key events when the user hits enter, otherwise there is no way to know when the user has 'confirmed' the text he wrote. This is on par with how it's done for the Android port. Change-Id: I585d4198de24b0d251e5e0dd2956ce81b6483f82 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-rw-r--r--src/plugins/platforms/ios/quiview_textinput.mm13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/plugins/platforms/ios/quiview_textinput.mm b/src/plugins/platforms/ios/quiview_textinput.mm
index d0088d415a..28fb23d57b 100644
--- a/src/plugins/platforms/ios/quiview_textinput.mm
+++ b/src/plugins/platforms/ios/quiview_textinput.mm
@@ -492,8 +492,17 @@ Q_GLOBAL_STATIC(StaticVariables, staticVariables);
if (!focusObject)
return;
- if ([text isEqualToString:@"\n"] && self.returnKeyType == UIReturnKeyDone)
- [self resignFirstResponder];
+ if ([text isEqualToString:@"\n"]) {
+ QKeyEvent press(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier);
+ QKeyEvent release(QEvent::KeyRelease, Qt::Key_Return, Qt::NoModifier);
+ [self sendEventToFocusObject:press];
+ [self sendEventToFocusObject:release];
+
+ if (self.returnKeyType == UIReturnKeyDone)
+ [self resignFirstResponder];
+
+ return;
+ }
QInputMethodEvent e;
e.setCommitString(QString::fromNSString(text));