Merge "Report ITYPE_BOTTOM_MANDATORY_GESTURES insets for Taskbar" into tm-dev

This commit is contained in:
Vinit Nayak
2022-05-17 13:56:51 +00:00
committed by Android (Google) Code Review
2 changed files with 21 additions and 4 deletions
@@ -16,10 +16,11 @@
package com.android.launcher3.taskbar package com.android.launcher3.taskbar
import android.graphics.Insets import android.graphics.Insets
import android.graphics.Region
import android.view.InsetsState.ITYPE_BOTTOM_MANDATORY_GESTURES
import android.view.WindowManager import android.view.WindowManager
import com.android.launcher3.AbstractFloatingView import com.android.launcher3.AbstractFloatingView
import com.android.launcher3.AbstractFloatingView.TYPE_TASKBAR_ALL_APPS import com.android.launcher3.AbstractFloatingView.TYPE_TASKBAR_ALL_APPS
import com.android.launcher3.R
import com.android.launcher3.anim.AlphaUpdateListener import com.android.launcher3.anim.AlphaUpdateListener
import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController
import com.android.quickstep.KtR 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. */ /** The bottom insets taskbar provides to the IME when IME is visible. */
val taskbarHeightForIme: Int = context.resources.getDimensionPixelSize( val taskbarHeightForIme: Int = context.resources.getDimensionPixelSize(
KtR.dimen.taskbar_ime_size) KtR.dimen.taskbar_ime_size)
private val contentRegion: Region = Region()
// Initialized in init. // Initialized in init.
private lateinit var controllers: TaskbarControllers private lateinit var controllers: TaskbarControllers
@@ -50,7 +52,8 @@ class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTask
windowLayoutParams, windowLayoutParams,
intArrayOf( intArrayOf(
ITYPE_EXTRA_NAVIGATION_BAR, 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() { fun onTaskbarWindowHeightOrInsetsChanged() {
var reducingSize = getReducingInsetsForTaskbarInsetsHeight( var reducingSize = getReducingInsetsForTaskbarInsetsHeight(
controllers.taskbarStashController.contentHeightToReportToApps) controllers.taskbarStashController.contentHeightToReportToApps)
contentRegion.set(0, reducingSize.top,
context.dragLayer.width, windowLayoutParams.height)
windowLayoutParams.providedInternalInsets[ITYPE_EXTRA_NAVIGATION_BAR] = reducingSize windowLayoutParams.providedInternalInsets[ITYPE_EXTRA_NAVIGATION_BAR] = reducingSize
windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_MANDATORY_GESTURES] = reducingSize
reducingSize = getReducingInsetsForTaskbarInsetsHeight( reducingSize = getReducingInsetsForTaskbarInsetsHeight(
controllers.taskbarStashController.tappableHeightToReportToApps) controllers.taskbarStashController.tappableHeightToReportToApps)
windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT] = reducingSize windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT] = reducingSize
windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_MANDATORY_GESTURES] = reducingSize
reducingSize = getReducingInsetsForTaskbarInsetsHeight(taskbarHeightForIme) reducingSize = getReducingInsetsForTaskbarInsetsHeight(taskbarHeightForIme)
windowLayoutParams.providedInternalImeInsets[ITYPE_EXTRA_NAVIGATION_BAR] = reducingSize windowLayoutParams.providedInternalImeInsets[ITYPE_EXTRA_NAVIGATION_BAR] = reducingSize
windowLayoutParams.providedInternalImeInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT] = 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) { if (context.isTaskbarWindowFullscreen) {
InsetsInfo.TOUCHABLE_INSETS_FRAME InsetsInfo.TOUCHABLE_INSETS_FRAME
} else { } else {
InsetsInfo.TOUCHABLE_INSETS_CONTENT insetsInfo.touchableRegion.set(contentRegion)
InsetsInfo.TOUCHABLE_INSETS_REGION
} }
) )
insetsIsTouchableRegion = false insetsIsTouchableRegion = false
@@ -40,6 +40,7 @@ import android.view.accessibility.AccessibilityEvent;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.InsettableFrameLayout; import com.android.launcher3.InsettableFrameLayout;
import com.android.launcher3.Utilities; import com.android.launcher3.Utilities;
import com.android.launcher3.util.MultiValueAlpha; import com.android.launcher3.util.MultiValueAlpha;
@@ -553,8 +554,14 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) { public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
if (Utilities.ATLEAST_Q) { if (Utilities.ATLEAST_Q) {
Insets gestureInsets = insets.getMandatorySystemGestureInsets(); 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, mSystemGestureRegion.set(gestureInsets.left, gestureInsets.top,
gestureInsets.right, gestureInsets.bottom); gestureInsets.right, gestureInsetBottom);
} }
return super.dispatchApplyWindowInsets(insets); return super.dispatchApplyWindowInsets(insets);
} }