Fix FLAG_NOT_FOCUSABLE ime target
Windows with FLAG_NOT_FOCUSABLE can not be IME target unless alpha is
zero (i.e. app is using transparent window to detect IME for legacy
reasons).
Going forward we can improve this with the todo already mentioned in the
code block.
Bug: 145812508
Fix: 149899590
Test: Manually verified using steps in bug.
Merged-In: I0e7db484dd4f9b584998b9f922fd46030fb6fb72
Change-Id: I0e7db484dd4f9b584998b9f922fd46030fb6fb72
(cherry picked from commit f3a2b52e16)
This commit is contained in:
committed by
Taran Singh
parent
d506a78e94
commit
f5816e7d30
@@ -2256,9 +2256,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
return false;
|
||||
}
|
||||
|
||||
if (PixelFormat.formatHasAlpha(mAttrs.format)) {
|
||||
// Support legacy use cases where transparent windows can still be ime target with
|
||||
// FLAG_NOT_FOCUSABLE and ALT_FOCUSABLE_IM set.
|
||||
if (PixelFormat.formatHasAlpha(mAttrs.format) && mAttrs.alpha == 0) {
|
||||
// Support legacy use cases where completely transparent windows can still be ime target
|
||||
// with FLAG_NOT_FOCUSABLE and ALT_FOCUSABLE_IM set.
|
||||
// Certain apps listen for IME insets using transparent windows and ADJUST_NOTHING to
|
||||
// manually synchronize app content to IME animation b/144619551.
|
||||
// TODO(b/145812508): remove this once new focus management is complete b/141738570
|
||||
|
||||
@@ -251,9 +251,11 @@ public class WindowStateTests extends WindowTestsBase {
|
||||
|
||||
// b/145812508: special legacy use-case for transparent/translucent windows.
|
||||
appWindow.mAttrs.format = PixelFormat.TRANSPARENT;
|
||||
appWindow.mAttrs.alpha = 0;
|
||||
assertTrue(appWindow.canBeImeTarget());
|
||||
|
||||
appWindow.mAttrs.format = PixelFormat.OPAQUE;
|
||||
appWindow.mAttrs.alpha = 1;
|
||||
appWindow.mAttrs.flags &= ~FLAG_ALT_FOCUSABLE_IM;
|
||||
assertFalse(appWindow.canBeImeTarget());
|
||||
appWindow.mAttrs.flags &= ~FLAG_NOT_FOCUSABLE;
|
||||
|
||||
Reference in New Issue
Block a user