Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit c72eee7d authored by Cosmin Băieș's avatar Cosmin Băieș
Browse files

Unbind current IME immediately after switching

Currently when we switch to a different IME we only unbind the current
client, which calls InputMethodManager#setActive(false). Here, we try to
call startInput, which ends up unbinding the current IME and binding the
new one. However, if the current client does not have input focus
anymore, we early exit before calling startInput, leaving the previous
IME bound. The next time we startInput by either this client or another
getting input focus, we switch the bound IME successfully.

This can happen if some dialog gets input focus (e.g. a dialog from
inside the IME itself, or the IME Switcher menu dialog) and the user
switches to a different IME in this state.

This adds a call to directly unbind the current IME whenever we
successfully switch to a different one, with the binding of the new IME
happening in the next successful startInput call.

With this change we could enter a case where some dialog (other than one
inside the IME or the IME switcher menu dialog) gets input focus and the
user switches to a different IME, which will directly close the current
one, without closing the dialog itself, however that should lead to an
overall better experience (as switching IMEs should at the very least
stop the current one).

Flag: EXEMPT bugfix
Test: atest ImeSwitchingTest#testImeUnboundAfterSwitchingWithoutInputFocus
Bug: 359382114
Change-Id: If2f858c936ac2a30346233afc477f091b85263c9
parent 1a16f030
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment