Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f6c43e6 authored by Winson Chung's avatar Winson Chung
Browse files

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
parent a2daf95d
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -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) {
+5 −0
Original line number Diff line number Diff line
@@ -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.