diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index c94a915b2747c..13c3df3acb690 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -378,11 +378,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()); } } @@ -1968,6 +1970,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;