diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt index 73cae97ce1..c51a7ec825 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt @@ -44,6 +44,7 @@ import com.android.launcher3.anim.AlphaUpdateListener import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController import com.android.launcher3.util.DisplayController import java.io.PrintWriter +import kotlin.jvm.optionals.getOrNull /** Handles the insets that Taskbar provides to underlying apps and the IME. */ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTaskbarController { @@ -290,9 +291,24 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas controllers.uiController.isInOverview && DisplayController.isTransientTaskbar(context) ) { - insetsInfo.touchableRegion.set( + val region = controllers.taskbarActivityContext.dragLayer.lastDrawnTransientRect.toRegion() - ) + val bubbleBarBounds = + controllers.bubbleControllers.getOrNull()?.let { bubbleControllers -> + if (!bubbleControllers.bubbleStashController.isBubblesShowingOnOverview) { + return@let null + } + if (!bubbleControllers.bubbleBarViewController.isBubbleBarVisible) { + return@let null + } + bubbleControllers.bubbleBarViewController.bubbleBarBounds + } + + // Include the bounds of the bubble bar in the touchable region if they exist. + if (bubbleBarBounds != null) { + region.op(bubbleBarBounds, Region.Op.UNION) + } + insetsInfo.touchableRegion.set(region) } else { insetsInfo.touchableRegion.set(touchableRegion) } diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashController.java index 00c2ca1b2b..a5ea5a9955 100644 --- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashController.java @@ -197,6 +197,11 @@ public class BubbleStashController { } } + /** Whether bubbles are showing on Overview. */ + public boolean isBubblesShowingOnOverview() { + return mBubblesShowingOnOverview; + } + /** Called when sysui locked state changes, when locked, bubble bar is stashed. */ public void onSysuiLockedStateChange(boolean isSysuiLocked) { if (isSysuiLocked != mIsSysuiLocked) {