From 8436e0b38213557919e0c63ec0ef13896755192d Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Fri, 31 Mar 2023 18:32:10 +0000 Subject: [PATCH] Fix gesture insets issue for IMEs - Setting the override frame for the gesture insets sources prevents the insets from being calculated correctly for the IME window - Update the set of provided insets based on the current nav mode so that we don't report gesture insets in button nav Bug: 265614886 Test: Dump IME window insets for button/gesture nav Change-Id: I22f9d09a66b50d6e2fb5002af19058657a06404d Merged-In: I22f9d09a66b50d6e2fb5002af19058657a06404d --- .../taskbar/TaskbarInsetsController.kt | 51 +++++++++++++------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt index f32e025f53..2711b78570 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt @@ -64,22 +64,9 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas fun init(controllers: TaskbarControllers) { this.controllers = controllers windowLayoutParams = context.windowLayoutParams - - setProvidesInsetsTypes( - windowLayoutParams, - intArrayOf( - ITYPE_EXTRA_NAVIGATION_BAR, - ITYPE_BOTTOM_TAPPABLE_ELEMENT, - ITYPE_BOTTOM_MANDATORY_GESTURES, - ITYPE_LEFT_GESTURES, - ITYPE_RIGHT_GESTURES, - ), - intArrayOf(SOURCE_FRAME, SOURCE_FRAME, SOURCE_FRAME, SOURCE_DISPLAY, SOURCE_DISPLAY) - ) - + windowLayoutParams.insetsRoundedCornerFrame = true onTaskbarWindowHeightOrInsetsChanged() - windowLayoutParams.insetsRoundedCornerFrame = true context.addOnDeviceProfileChangeListener(deviceProfileChangeListener) gestureNavSettingsObserver.registerForCallingUser() } @@ -90,6 +77,38 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas } fun onTaskbarWindowHeightOrInsetsChanged() { + if (context.isGestureNav) { + setProvidesInsetsTypes( + windowLayoutParams, + intArrayOf( + ITYPE_EXTRA_NAVIGATION_BAR, + ITYPE_BOTTOM_TAPPABLE_ELEMENT, + ITYPE_BOTTOM_MANDATORY_GESTURES, + ITYPE_LEFT_GESTURES, + ITYPE_RIGHT_GESTURES, + ), + intArrayOf( + SOURCE_FRAME, + SOURCE_FRAME, + SOURCE_FRAME, + SOURCE_DISPLAY, + SOURCE_DISPLAY + ) + ) + } else { + setProvidesInsetsTypes( + windowLayoutParams, + intArrayOf( + ITYPE_EXTRA_NAVIGATION_BAR, + ITYPE_BOTTOM_TAPPABLE_ELEMENT + ), + intArrayOf( + SOURCE_FRAME, + SOURCE_FRAME + ) + ) + } + val touchableHeight = controllers.taskbarStashController.touchableHeight touchableRegion.set( 0, @@ -145,7 +164,9 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas for (provider in windowLayoutParams.providedInsets) { if (context.isGestureNav && provider.type == ITYPE_BOTTOM_TAPPABLE_ELEMENT) { provider.insetsSizeOverrides = insetsSizeOverrideForGestureNavTappableElement - } else { + } else if (provider.type != ITYPE_LEFT_GESTURES + && provider.type != ITYPE_RIGHT_GESTURES) { + // We only override insets at the bottom of the screen provider.insetsSizeOverrides = insetsSizeOverride } }