Merge "Report ITYPE_BOTTOM_MANDATORY_GESTURES insets for Taskbar" into tm-dev
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user