From 7888447c342cf61d0043dcbf502d8e3abf1a0e58 Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Mon, 13 Mar 2023 14:04:18 -0700 Subject: [PATCH] Allow touch regions beyond layers from task managers Task managers may need to receive touch events out of task layer crops to resize tasks in freeform windows. Bug: 258070472 Test: Resize tasks without loosened task layer crops. Change-Id: I70cd2edf5720759e171298c1864854ab81b13b27 --- .../java/com/android/server/wm/WindowManagerService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 45cdacd503a8a..ce03133413628 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -8849,7 +8849,13 @@ public class WindowManagerService extends IWindowManager.Stub } else { h.touchableRegion.set(region); h.replaceTouchableRegionWithCrop = false; - h.setTouchableRegionCrop(surface); + + // Task managers may need to receive input events around task layers to resize tasks. + final int permissionResult = mContext.checkPermission( + permission.MANAGE_ACTIVITY_TASKS, callingPid, callingUid); + if (permissionResult != PackageManager.PERMISSION_GRANTED) { + h.setTouchableRegionCrop(surface); + } } final SurfaceControl.Transaction t = mTransactionFactory.get();