diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java index 43c47417d95ff..086513bb141f4 100644 --- a/services/core/java/com/android/server/wm/InputMonitor.java +++ b/services/core/java/com/android/server/wm/InputMonitor.java @@ -326,11 +326,12 @@ final class InputMonitor { // the surface hierarchy. // TODO(b/168252846): we have some issues with modal-windows, so we need to cross // that bridge now that we organize full-screen Tasks. - inputWindowHandle.replaceTouchableRegionWithCrop(null /* Use this surfaces crop */); + inputWindowHandle.setTouchableRegionCrop(null /* Use this surfaces crop */); + inputWindowHandle.setReplaceTouchableRegionWithCrop(true); useSurfaceCrop = true; } else if (task.cropWindowsToStackBounds() && !w.inFreeformWindowingMode()) { - inputWindowHandle.replaceTouchableRegionWithCrop( - task.getRootTask().getSurfaceControl()); + inputWindowHandle.setTouchableRegionCrop(task.getRootTask().getSurfaceControl()); + inputWindowHandle.setReplaceTouchableRegionWithCrop(false); useSurfaceCrop = true; } } diff --git a/services/core/java/com/android/server/wm/InputWindowHandleWrapper.java b/services/core/java/com/android/server/wm/InputWindowHandleWrapper.java index 1fbeb1fd456b6..9339f3475684b 100644 --- a/services/core/java/com/android/server/wm/InputWindowHandleWrapper.java +++ b/services/core/java/com/android/server/wm/InputWindowHandleWrapper.java @@ -255,11 +255,6 @@ class InputWindowHandleWrapper { mChanged = true; } - void replaceTouchableRegionWithCrop(@Nullable SurfaceControl bounds) { - setTouchableRegionCrop(bounds); - setReplaceTouchableRegionWithCrop(true); - } - void setTouchableRegionCrop(@Nullable SurfaceControl bounds) { if (mHandle.touchableRegionSurfaceControl.get() == bounds) { return; 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 5c4563e0ce1b4..88a3f972f83ec 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java @@ -694,6 +694,8 @@ public class WindowStateTests extends WindowTestsBase { mDisplayContent.getInputMonitor().populateInputWindowHandle(handleWrapper, win); assertTrue(handleWrapper.isChanged()); + // The window of standard resizable task should not use surface crop as touchable region. + assertFalse(handle.replaceTouchableRegionWithCrop); assertEquals(inputChannelToken, handle.token); assertEquals(win.mActivityRecord.getInputApplicationHandle(false /* update */), handle.inputApplicationHandle);