Fix for IME exclusions not working with expanded bubble

- Technically the IME window is above the Bubble window, but when
  traversing the windows top-down for calculating the final exclusion
  region for SysUI, the IME is placed just above its target (the
  embedded task), and the Bubble's full touchable region effectively
  overrides the IME's requested exclusion region

Fixes: 190338512
Test: Expand a bubble, swipe from IME edge
Change-Id: Idd71eabfaba1be4bc6fc90d09db28d3f9e9106c5
This commit is contained in:
Winson Chung
2021-06-08 21:29:37 -07:00
parent a2daf95d1c
commit 9f6c43e65c
2 changed files with 9 additions and 7 deletions

View File

@@ -852,13 +852,6 @@ public class BubbleStackView extends FrameLayout
mTaskbarScrim.setAlpha(0f);
mTaskbarScrim.setVisibility(GONE);
setOnApplyWindowInsetsListener((View view, WindowInsets insets) -> {
if (!mIsExpanded || mIsExpansionAnimating) {
return view.onApplyWindowInsets(insets);
}
return view.onApplyWindowInsets(insets);
});
mOrientationChangedListener =
(v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
mPositioner.update();
@@ -2465,6 +2458,10 @@ public class BubbleStackView extends FrameLayout
}
} else {
mBubbleContainer.getBoundsOnScreen(outRect);
// Account for the IME in the touchable region so that the touchable region of the
// Bubble window doesn't obscure the IME. The touchable region affects which areas
// of the screen can be excluded by lower windows (IME is just above the embedded task)
outRect.bottom -= (int) mStackAnimationController.getImeHeight();
}
if (mFlyout.getVisibility() == View.VISIBLE) {

View File

@@ -529,6 +529,11 @@ public class StackAnimationController extends
mImeHeight = imeHeight;
}
/** Returns the current IME height that the stack is offset by. */
public float getImeHeight() {
return mImeHeight;
}
/**
* Animates the stack either away from the newly visible IME, or back to its original position
* due to the IME going away.