diff options
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java | 9 | ||||
-rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 12 |
2 files changed, 15 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java index 5b2eb84..065523f 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java @@ -155,6 +155,7 @@ public class VolumeDialog { lp.y = res.getDimensionPixelSize(R.dimen.volume_offset_top); lp.gravity = Gravity.TOP; window.setAttributes(lp); + window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING); mActiveSliderTint = loadColorStateList(R.color.system_accent_color); mInactiveSliderTint = loadColorStateList(R.color.volume_slider_inactive); @@ -670,6 +671,14 @@ public class VolumeDialog { } private void updateVolumeRowSliderTintH(VolumeRow row, boolean isActive) { + if (isActive && mExpanded) { + row.slider.setFocusable(true); + row.slider.setFocusableInTouchMode(true); + row.slider.requestFocus(); + } else { + row.slider.setFocusableInTouchMode(false); + row.slider.setFocusable(false); + } final ColorStateList tint = isActive && row.slider.isEnabled() ? mActiveSliderTint : mInactiveSliderTint; if (tint == row.cachedSliderTint) return; diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index bd545df..79dac14 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3927,7 +3927,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { // A window that has requested to fill the entire screen just // gets everything, period. if (attrs.type == TYPE_STATUS_BAR_PANEL - || attrs.type == TYPE_STATUS_BAR_SUB_PANEL) { + || attrs.type == TYPE_STATUS_BAR_SUB_PANEL + || attrs.type == TYPE_VOLUME_OVERLAY) { pf.left = df.left = of.left = cf.left = hasNavBar ? mDockLeft : mUnrestrictedScreenLeft; pf.top = df.top = of.top = cf.top = mUnrestrictedScreenTop; @@ -4042,9 +4043,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { "): normal window"); // Otherwise, a normal window must be placed inside the content // of all screen decorations. - if (attrs.type == TYPE_STATUS_BAR_PANEL) { - // Status bar panels are the only windows who can go on top of - // the status bar. They are protected by the STATUS_BAR_SERVICE + if (attrs.type == TYPE_STATUS_BAR_PANEL || attrs.type == TYPE_VOLUME_OVERLAY) { + // Status bar panels and the volume dialog are the only windows who can go on + // top of the status bar. They are protected by the STATUS_BAR_SERVICE // permission, so they have the same privileges as the status // bar itself. pf.left = df.left = of.left = cf.left = mRestrictedScreenLeft; @@ -4053,8 +4054,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { + mRestrictedScreenWidth; pf.bottom = df.bottom = of.bottom = cf.bottom = mRestrictedScreenTop + mRestrictedScreenHeight; - } else if (attrs.type == TYPE_TOAST || attrs.type == TYPE_SYSTEM_ALERT - || attrs.type == TYPE_VOLUME_OVERLAY) { + } else if (attrs.type == TYPE_TOAST || attrs.type == TYPE_SYSTEM_ALERT) { // These dialogs are stable to interim decor changes. pf.left = df.left = of.left = cf.left = mStableLeft; pf.top = df.top = of.top = cf.top = mStableTop; |