Merge "VolumeDialogImpl: Respect multiple visible rows in landscape"

This commit is contained in:
Josh Tsuji 2022-08-02 18:29:01 +00:00 committed by Gerrit Code Review
commit ef9dfbfa4a

View File

@ -363,11 +363,13 @@ public class VolumeDialogImpl implements VolumeDialog,
// The ringer and rows container has extra height at the top to fit the expanded ringer
// drawer. This area should not be touchable unless the ringer drawer is open.
// In landscape the ringer expands to the left and it has to be ensured that if there
// are multiple rows they are touchable.
if (view == mTopContainer && !mIsRingerDrawerOpen) {
if (!isLandscape()) {
y += getRingerDrawerOpenExtraSize();
} else {
x += getRingerDrawerOpenExtraSize();
} else if (getRingerDrawerOpenExtraSize() > getVisibleRowsExtraSize()) {
x += (getRingerDrawerOpenExtraSize() - getVisibleRowsExtraSize());
}
}
@ -1926,6 +1928,21 @@ public class VolumeDialogImpl implements VolumeDialog,
return (mRingerCount - 1) * mRingerDrawerItemSize;
}
/**
* Return the size of the additionally visible rows next to the default stream.
* An additional row is visible for example while receiving a voice call.
*/
private int getVisibleRowsExtraSize() {
VolumeRow activeRow = getActiveRow();
int visibleRows = 0;
for (final VolumeRow row : mRows) {
if (shouldBeVisibleH(row, activeRow)) {
visibleRows++;
}
}
return (visibleRows - 1) * (mDialogWidth + mRingerRowsPadding);
}
private void updateBackgroundForDrawerClosedAmount() {
if (mRingerAndDrawerContainerBackground == null) {
return;