Handle IME when target moves between splits
Handle split-screen IME when target window is launched in secondary from primary split. By comparing actual InputMethod's input target to the window requesting IME window, we can allow showInsets(ime()). Fix: 159576146 Test: atest ImeInsetsSourceProviderTest Change-Id: Ife4137cc84eba99cf4f6e2f3957f13dcb95818c9
This commit is contained in:
@@ -138,8 +138,9 @@ class ImeInsetsSourceProvider extends InsetsSourceProvider {
|
||||
&& dcTarget.getParentWindow() == mImeTargetFromIme
|
||||
&& dcTarget.mSubLayer > mImeTargetFromIme.getWindow().mSubLayer)
|
||||
|| mImeTargetFromIme == mDisplayContent.getImeFallback()
|
||||
|| mImeTargetFromIme == mDisplayContent.mInputMethodInputTarget
|
||||
|| controlTarget == mImeTargetFromIme
|
||||
&& (mImeTargetFromIme.getWindow() == null
|
||||
&& (mImeTargetFromIme.getWindow() == null
|
||||
|| !mImeTargetFromIme.getWindow().isClosing());
|
||||
}
|
||||
|
||||
|
||||
@@ -56,4 +56,12 @@ public class ImeInsetsSourceProviderTest extends WindowTestsBase {
|
||||
mImeProvider.scheduleShowImePostLayout(appWin);
|
||||
assertTrue(mImeProvider.isImeTargetFromDisplayContentAndImeSame());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInputMethodInputTargetCanShowIme() {
|
||||
WindowState target = createWindow(null, TYPE_APPLICATION, "app");
|
||||
mDisplayContent.mInputMethodTarget = target;
|
||||
mImeProvider.scheduleShowImePostLayout(target);
|
||||
assertTrue(mImeProvider.isImeTargetFromDisplayContentAndImeSame());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user