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
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
index f32e025..2711b78 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
@@ -64,22 +64,9 @@
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 @@
}
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 @@
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
}
}