Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java +14 −7 Original line number Diff line number Diff line Loading @@ -557,7 +557,7 @@ public class BubblePositioner { } if (showBubblesVertically() && mImeVisible) { return new PointF(x, getExpandedBubbleYForIme(index, state.numberOfBubbles)); return new PointF(x, getExpandedBubbleYForIme(index, state)); } return new PointF(x, y); } Loading @@ -567,10 +567,10 @@ public class BubblePositioner { * is showing. * * @param index the index of the bubble in the stack. * @param numberOfBubbles the total number of bubbles in the stack. * @param state information about the stack state (# of bubbles, selected bubble). * @return y position of the bubble on-screen when the stack is expanded. */ private float getExpandedBubbleYForIme(int index, int numberOfBubbles) { private float getExpandedBubbleYForIme(int index, BubbleStackView.StackViewState state) { final float top = getAvailableRect().top + mExpandedViewPadding; if (!showBubblesVertically()) { // Showing horizontally: align to top Loading @@ -578,10 +578,10 @@ public class BubblePositioner { } // 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. final float bottomHeight = getImeHeight() + mInsets.bottom - (mSpacingBetweenBubbles * 2); // Add spacing here to provide a margin between top of IME and bottom of bubble row. final float bottomHeight = getImeHeight() + mInsets.bottom + (mSpacingBetweenBubbles * 2); final float bottomInset = mScreenRect.bottom - bottomHeight; final float expandedStackSize = getExpandedStackSize(numberOfBubbles); final float expandedStackSize = getExpandedStackSize(state.numberOfBubbles); final float centerPosition = mPositionRect.centerY(); final float rowBottom = centerPosition + (expandedStackSize / 2f); final float rowTop = centerPosition - (expandedStackSize / 2f); Loading @@ -593,7 +593,7 @@ public class BubblePositioner { if (rowTop - translationY < top) { // Even if we shift the bubbles, they will still overlap with the IME. // Hide the overflow for a lil more space: final float expandedStackSizeNoO = getExpandedStackSize(numberOfBubbles - 1); final float expandedStackSizeNoO = getExpandedStackSize(state.numberOfBubbles - 1); final float centerPositionNoO = showBubblesVertically() ? mPositionRect.centerY() : mPositionRect.centerX(); Loading @@ -603,6 +603,13 @@ public class BubblePositioner { rowTopForIme = rowTopNoO - translationY; } } // Check if the selected bubble is within the appropriate space final float selectedPosition = rowTopForIme + (state.selectedIndex * (mBubbleSize + mSpacingBetweenBubbles)); if (selectedPosition < top) { // We must always keep the selected bubble in view so we'll have to allow more overlap. rowTopForIme = top; } return rowTopForIme + (index * (mBubbleSize + mSpacingBetweenBubbles)); } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java +14 −7 Original line number Diff line number Diff line Loading @@ -557,7 +557,7 @@ public class BubblePositioner { } if (showBubblesVertically() && mImeVisible) { return new PointF(x, getExpandedBubbleYForIme(index, state.numberOfBubbles)); return new PointF(x, getExpandedBubbleYForIme(index, state)); } return new PointF(x, y); } Loading @@ -567,10 +567,10 @@ public class BubblePositioner { * is showing. * * @param index the index of the bubble in the stack. * @param numberOfBubbles the total number of bubbles in the stack. * @param state information about the stack state (# of bubbles, selected bubble). * @return y position of the bubble on-screen when the stack is expanded. */ private float getExpandedBubbleYForIme(int index, int numberOfBubbles) { private float getExpandedBubbleYForIme(int index, BubbleStackView.StackViewState state) { final float top = getAvailableRect().top + mExpandedViewPadding; if (!showBubblesVertically()) { // Showing horizontally: align to top Loading @@ -578,10 +578,10 @@ public class BubblePositioner { } // 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. final float bottomHeight = getImeHeight() + mInsets.bottom - (mSpacingBetweenBubbles * 2); // Add spacing here to provide a margin between top of IME and bottom of bubble row. final float bottomHeight = getImeHeight() + mInsets.bottom + (mSpacingBetweenBubbles * 2); final float bottomInset = mScreenRect.bottom - bottomHeight; final float expandedStackSize = getExpandedStackSize(numberOfBubbles); final float expandedStackSize = getExpandedStackSize(state.numberOfBubbles); final float centerPosition = mPositionRect.centerY(); final float rowBottom = centerPosition + (expandedStackSize / 2f); final float rowTop = centerPosition - (expandedStackSize / 2f); Loading @@ -593,7 +593,7 @@ public class BubblePositioner { if (rowTop - translationY < top) { // Even if we shift the bubbles, they will still overlap with the IME. // Hide the overflow for a lil more space: final float expandedStackSizeNoO = getExpandedStackSize(numberOfBubbles - 1); final float expandedStackSizeNoO = getExpandedStackSize(state.numberOfBubbles - 1); final float centerPositionNoO = showBubblesVertically() ? mPositionRect.centerY() : mPositionRect.centerX(); Loading @@ -603,6 +603,13 @@ public class BubblePositioner { rowTopForIme = rowTopNoO - translationY; } } // Check if the selected bubble is within the appropriate space final float selectedPosition = rowTopForIme + (state.selectedIndex * (mBubbleSize + mSpacingBetweenBubbles)); if (selectedPosition < top) { // We must always keep the selected bubble in view so we'll have to allow more overlap. rowTopForIme = top; } return rowTopForIme + (index * (mBubbleSize + mSpacingBetweenBubbles)); } Loading