From ae2002a25ed49c721010acf95ba827dce31b1a8d Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Mon, 16 Dec 2019 15:24:58 +0800 Subject: [PATCH] Reset SurfaceControl when reapplying magnification spec If there is a container becomes to non-magnifiable, we need to clear magnification spec (reset the state) and re-traverse all children again. Bug: 144810344 Test: A11y CTS & unit tests Test: atest WmTests Test: manual 1. Enable Magnification in Settings > Accessibility. 2. Open any app with an EditText, tap it to bring up the IME. 3. Trigger Magnification. 4. Check only the app should be magnified, but not IME. 5. Switch to another IME, and check 4, again. Change-Id: Ia04cb6c49b67dab98cee5bb0cacef12a8bdaffd8 Merged-In: Ia04cb6c49b67dab98cee5bb0cacef12a8bdaffd8 --- services/core/java/com/android/server/wm/WindowContainer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index f77e1b7f268e2..1a3704e1e1a8c 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -1190,6 +1190,7 @@ class WindowContainer extends ConfigurationContainer< .setPosition(mSurfaceControl, spec.offsetX, spec.offsetY); mLastMagnificationSpec = spec; } else { + clearMagnificationSpec(t); for (int i = 0; i < mChildren.size(); i++) { mChildren.get(i).applyMagnificationSpec(t, spec); }