summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/ios/qiosinputcontext.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/ios/qiosinputcontext.mm')
-rw-r--r--src/plugins/platforms/ios/qiosinputcontext.mm33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/plugins/platforms/ios/qiosinputcontext.mm b/src/plugins/platforms/ios/qiosinputcontext.mm
index 22847b0612..a558ebe1f7 100644
--- a/src/plugins/platforms/ios/qiosinputcontext.mm
+++ b/src/plugins/platforms/ios/qiosinputcontext.mm
@@ -587,28 +587,27 @@ void QIOSInputContext::update(Qt::InputMethodQueries updatedProperties)
qImDebug() << "fw =" << qApp->focusWindow() << "fo =" << qApp->focusObject();
Qt::InputMethodQueries changedProperties = m_imeState.update(updatedProperties);
- if (changedProperties & (Qt::ImEnabled | Qt::ImHints | Qt::ImPlatformData)) {
- // Changes to enablement or hints require virtual keyboard reconfigure
-
- qImDebug() << "changed IM properties" << changedProperties << "require keyboard reconfigure";
+ if (m_textResponder && changedProperties & (Qt::ImHints | Qt::ImPlatformData)) {
+ qImDebug() << "current IM state requires new text responder";
+ [m_textResponder autorelease];
+ m_textResponder = 0;
+ }
- if (inputMethodAccepted()) {
- qImDebug() << "replacing text responder with new text responder";
- [m_textResponder autorelease];
+ if (inputMethodAccepted()) {
+ if (!m_textResponder) {
+ qImDebug() << "creating new text responder";
m_textResponder = [[QIOSTextInputResponder alloc] initWithInputContext:this];
- [m_textResponder becomeFirstResponder];
- } else if ([UIResponder currentFirstResponder] == m_textResponder) {
- qImDebug() << "IM not enabled, resigning text responder as first responder";
- [m_textResponder resignFirstResponder];
- } else {
- qImDebug() << "IM not enabled. Text responder not first responder. Nothing to do";
}
- } else {
+ if (![m_textResponder isFirstResponder])
+ [m_textResponder becomeFirstResponder];
+
[m_textResponder notifyInputDelegate:changedProperties];
- }
- if (changedProperties & Qt::ImCursorRectangle)
- scrollToCursor();
+ if (changedProperties & Qt::ImCursorRectangle)
+ scrollToCursor();
+ } else if ([m_textResponder isFirstResponder]) {
+ [m_textResponder resignFirstResponder];
+ }
}
bool QIOSInputContext::inputMethodAccepted() const