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

Commit 020aa384 authored by Mady Mellor's avatar Mady Mellor
Browse files

Fix bubbles IME alignment on tablet

There was a mistake in the math here, instead of using the y location
of the top of the IME, it was just using the height of the IME in
the calculation. This caused the bubbles to move out of the way
of the IME in tablet portrait when they didn't actually have to move.

This also impacted tablet landscape causing the bubbles to NOT move
out of the way of the IME when they should.

Test: manual - have bubbles on tablet in portrait and have the IME
               show, bubbles should only move if the IME would
               overlap with them.
             - have 5 bubbles on tablet in landscape and have the IME
               show, bubbles should move above the IME as much as
               they can without going past the top of the expanded
               view.
Bug: 223912157
Bug: 215063840
Change-Id: Ifd763caef6c521b1083757cade2898b1361198cd
parent 9d13dc95
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -692,6 +692,7 @@ public class BubbleExpandedView extends LinearLayout {
     * @param bubblePosition the x position of the bubble if showing on top, the y position of
     * @param bubblePosition the x position of the bubble if showing on top, the y position of
     *                       the bubble if showing vertically.
     *                       the bubble if showing vertically.
     * @param onLeft whether the stack was on the left side of the screen when expanded.
     * @param onLeft whether the stack was on the left side of the screen when expanded.
     * @param animate whether the pointer should animate to this position.
     */
     */
    public void setPointerPosition(float bubblePosition, boolean onLeft, boolean animate) {
    public void setPointerPosition(float bubblePosition, boolean onLeft, boolean animate) {
        // Pointer gets drawn in the padding
        // Pointer gets drawn in the padding
+3 −4
Original line number Original line Diff line number Diff line
@@ -579,11 +579,10 @@ public class BubblePositioner {


        // Showing vertically: might need to translate the bubbles above the IME.
        // Showing vertically: might need to translate the bubbles above the IME.
        // Subtract spacing here to provide a margin between top of IME and bottom of bubble row.
        // Subtract spacing here to provide a margin between top of IME and bottom of bubble row.
        final float bottomInset = getImeHeight() + mInsets.bottom - (mSpacingBetweenBubbles * 2);
        final float bottomHeight = getImeHeight() + mInsets.bottom - (mSpacingBetweenBubbles * 2);
        final float bottomInset = mScreenRect.bottom - bottomHeight;
        final float expandedStackSize = getExpandedStackSize(numberOfBubbles);
        final float expandedStackSize = getExpandedStackSize(numberOfBubbles);
        final float centerPosition = showBubblesVertically()
        final float centerPosition = mPositionRect.centerY();
                ? mPositionRect.centerY()
                : mPositionRect.centerX();
        final float rowBottom = centerPosition + (expandedStackSize / 2f);
        final float rowBottom = centerPosition + (expandedStackSize / 2f);
        final float rowTop = centerPosition - (expandedStackSize / 2f);
        final float rowTop = centerPosition - (expandedStackSize / 2f);
        float rowTopForIme = rowTop;
        float rowTopForIme = rowTop;