diff options
| author | 2022-01-06 16:57:04 +0000 | |
|---|---|---|
| committer | 2022-01-06 16:57:04 +0000 | |
| commit | 2edc6b83a235927651df8b1760e2c75a3290e078 (patch) | |
| tree | 78ab4d4e3fa0e22572b81189c09d0b9f09a996ff | |
| parent | 51a1afe4e66e2e4f5c2c422e785e4e01bf2f625b (diff) | |
| parent | 4c4ba205cf59301adcb13ec7ea719a74b22ae693 (diff) | |
Merge "Visible activity can be an ime target"
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 6 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 863e3ca3bc28..573ff2ff9963 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2547,7 +2547,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP if (DEBUG_INPUT_METHOD) { Slog.i(TAG_WM, "isVisibleRequestedOrAdding " + this + ": " - + isVisibleRequestedOrAdding()); + + isVisibleRequestedOrAdding() + " isVisible: " + (isVisible() + && mActivityRecord != null && mActivityRecord.isVisible())); if (!isVisibleRequestedOrAdding()) { Slog.i(TAG_WM, " mSurfaceController=" + mWinAnimator.mSurfaceController + " relayoutCalled=" + mRelayoutCalled @@ -2562,7 +2563,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } } } - return isVisibleRequestedOrAdding(); + return isVisibleRequestedOrAdding() + || (isVisible() && mActivityRecord != null && mActivityRecord.isVisible()); } private final class DeadWindowEventReceiver extends InputEventReceiver { diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java index ca2b4aebc736..ec8ec2b31918 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -252,6 +252,11 @@ public class WindowStateTests extends WindowTestsBase { assertFalse(appWindow.canBeImeTarget()); appWindow.mActivityRecord.setWindowingMode(initialMode); + // Verify that app window can still be IME target as long as it is visible (even if + // it is going to become invisible). + appWindow.mActivityRecord.mVisibleRequested = false; + assertTrue(appWindow.canBeImeTarget()); + // Make windows invisible appWindow.hide(false /* doAnimation */, false /* requestAnim */); imeWindow.hide(false /* doAnimation */, false /* requestAnim */); |