From 2cb5cb5d000e4c75636b2eb9ed7ab8731ca616f7 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Mon, 16 May 2022 12:39:33 -0700 Subject: [PATCH] Report ITYPE_BOTTOM_MANDATORY_GESTURES insets for Taskbar Bug: 205493938 Change-Id: I196bc52c1bec75b5442f3546f466799ba9c3831b --- .../launcher3/taskbar/TaskbarInsetsController.kt | 16 +++++++++++++--- .../android/launcher3/views/BaseDragLayer.java | 9 ++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt index 9870a2e0bf..21d7af9d69 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt @@ -16,10 +16,11 @@ package com.android.launcher3.taskbar import android.graphics.Insets +import android.graphics.Region +import android.view.InsetsState.ITYPE_BOTTOM_MANDATORY_GESTURES import android.view.WindowManager import com.android.launcher3.AbstractFloatingView import com.android.launcher3.AbstractFloatingView.TYPE_TASKBAR_ALL_APPS -import com.android.launcher3.R import com.android.launcher3.anim.AlphaUpdateListener import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController import com.android.quickstep.KtR @@ -36,6 +37,7 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask /** The bottom insets taskbar provides to the IME when IME is visible. */ val taskbarHeightForIme: Int = context.resources.getDimensionPixelSize( KtR.dimen.taskbar_ime_size) + private val contentRegion: Region = Region() // Initialized in init. private lateinit var controllers: TaskbarControllers @@ -50,7 +52,8 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask windowLayoutParams, intArrayOf( ITYPE_EXTRA_NAVIGATION_BAR, - ITYPE_BOTTOM_TAPPABLE_ELEMENT + ITYPE_BOTTOM_TAPPABLE_ELEMENT, + ITYPE_BOTTOM_MANDATORY_GESTURES ) ) @@ -67,14 +70,20 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask fun onTaskbarWindowHeightOrInsetsChanged() { var reducingSize = getReducingInsetsForTaskbarInsetsHeight( controllers.taskbarStashController.contentHeightToReportToApps) + + contentRegion.set(0, reducingSize.top, + context.dragLayer.width, windowLayoutParams.height) windowLayoutParams.providedInternalInsets[ITYPE_EXTRA_NAVIGATION_BAR] = reducingSize + windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_MANDATORY_GESTURES] = reducingSize reducingSize = getReducingInsetsForTaskbarInsetsHeight( controllers.taskbarStashController.tappableHeightToReportToApps) windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT] = reducingSize + windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_MANDATORY_GESTURES] = reducingSize reducingSize = getReducingInsetsForTaskbarInsetsHeight(taskbarHeightForIme) windowLayoutParams.providedInternalImeInsets[ITYPE_EXTRA_NAVIGATION_BAR] = reducingSize windowLayoutParams.providedInternalImeInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT] = reducingSize + windowLayoutParams.providedInternalImeInsets[ITYPE_BOTTOM_MANDATORY_GESTURES] = reducingSize } /** @@ -121,7 +130,8 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask if (context.isTaskbarWindowFullscreen) { InsetsInfo.TOUCHABLE_INSETS_FRAME } else { - InsetsInfo.TOUCHABLE_INSETS_CONTENT + insetsInfo.touchableRegion.set(contentRegion) + InsetsInfo.TOUCHABLE_INSETS_REGION } ) insetsIsTouchableRegion = false diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java index 4c001fd961..f553fb4e8e 100644 --- a/src/com/android/launcher3/views/BaseDragLayer.java +++ b/src/com/android/launcher3/views/BaseDragLayer.java @@ -40,6 +40,7 @@ import android.view.accessibility.AccessibilityEvent; import android.widget.FrameLayout; import com.android.launcher3.AbstractFloatingView; +import com.android.launcher3.DeviceProfile; import com.android.launcher3.InsettableFrameLayout; import com.android.launcher3.Utilities; import com.android.launcher3.util.MultiValueAlpha; @@ -553,8 +554,14 @@ public abstract class BaseDragLayer public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) { if (Utilities.ATLEAST_Q) { Insets gestureInsets = insets.getMandatorySystemGestureInsets(); + int gestureInsetBottom = gestureInsets.bottom; + DeviceProfile dp = mActivity.getDeviceProfile(); + if (dp.isTaskbarPresent) { + // Ignore taskbar gesture insets to avoid interfering with TouchControllers. + gestureInsetBottom = Math.max(0, gestureInsetBottom - dp.taskbarSize); + } mSystemGestureRegion.set(gestureInsets.left, gestureInsets.top, - gestureInsets.right, gestureInsets.bottom); + gestureInsets.right, gestureInsetBottom); } return super.dispatchApplyWindowInsets(insets); }