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

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 // 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. // 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 (view == mTopContainer && !mIsRingerDrawerOpen) {
if (!isLandscape()) { if (!isLandscape()) {
y += getRingerDrawerOpenExtraSize(); y += getRingerDrawerOpenExtraSize();
} else { } else if (getRingerDrawerOpenExtraSize() > getVisibleRowsExtraSize()) {
x += getRingerDrawerOpenExtraSize(); x += (getRingerDrawerOpenExtraSize() - getVisibleRowsExtraSize());
} }
} }
@@ -1926,6 +1928,21 @@ public class VolumeDialogImpl implements VolumeDialog,
return (mRingerCount - 1) * mRingerDrawerItemSize; 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() { private void updateBackgroundForDrawerClosedAmount() {
if (mRingerAndDrawerContainerBackground == null) { if (mRingerAndDrawerContainerBackground == null) {
return; return;