iOS: (crash fix) ensure we don't clear focus object in a text responder transition
When IM hints changes (e.g as a result of transferring focus between Qt objects), we sometimes need to reconfigure the keyboard. And the way we do that is to create a new QIOSTextResponder that matches the new configuration and tell it to become first responder. And in that process we need to ensure that we don't clear the focus object when the old text responder resigns. After all, it was the one requesting the new IM configuration in the first place. Since we set FirstResponderCandidate to point to the new text responder just before telling the old one to resign, we can use that variable to check if were in a first responder transition before clearing the focus object. Change-Id: I05bfb8180700a92a8f14f496044457583bcd38d3 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>bb10
parent
276adc5a09
commit
8586cccc07
|
|
@ -324,7 +324,7 @@
|
|||
// a regular responder transfer to another window. In the former case, iOS
|
||||
// will set the new first-responder to our next-responder, and in the latter
|
||||
// case we'll have an active responder candidate.
|
||||
if (![UIResponder currentFirstResponder]) {
|
||||
if (![UIResponder currentFirstResponder] && !FirstResponderCandidate::currentCandidate()) {
|
||||
// No first responder set anymore, sync this with Qt by clearing the
|
||||
// focus object.
|
||||
m_inputContext->clearCurrentFocusObject();
|
||||
|
|
|
|||
Loading…
Reference in New Issue