From 2f280d06396d7b8234197a3b1a35d5319f7d6951 Mon Sep 17 00:00:00 2001 From: Stefan Kuhne Date: Thu, 18 Jun 2015 07:20:33 -1000 Subject: [PATCH] Fixing voice panel centering issues in landscape on phone The new assist panel (long press on home) was not centered in landscape mode on phones. This was caused by ignoring the stable insets in the PhoneWindowManager. bug: 21708971 Change-Id: I97a968a41c2966b09eba496fbe57c840affdf9ec --- .../service/voice/VoiceInteractionSession.java | 3 ++- .../com/android/server/policy/PhoneWindowManager.java | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/java/android/service/voice/VoiceInteractionSession.java b/core/java/android/service/voice/VoiceInteractionSession.java index d5ee7e7304cc1..18a5327e0854e 100644 --- a/core/java/android/service/voice/VoiceInteractionSession.java +++ b/core/java/android/service/voice/VoiceInteractionSession.java @@ -1098,7 +1098,8 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall WindowManager.LayoutParams.TYPE_VOICE_INTERACTION, Gravity.BOTTOM, true); mWindow.getWindow().addFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED | - WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); + WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | + WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); initViews(); mWindow.getWindow().setLayout(MATCH_PARENT, MATCH_PARENT); mWindow.setToken(mToken); diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index dbcfa19153c88..6fb9a5cd040ed 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3739,13 +3739,14 @@ public class PhoneWindowManager implements WindowManagerPolicy { attrs.gravity = Gravity.BOTTOM; mDockLayer = win.getSurfaceLayer(); } else if (attrs.type == TYPE_VOICE_INTERACTION) { - pf.left = df.left = of.left = cf.left = vf.left = mUnrestrictedScreenLeft; + pf.left = df.left = of.left = mUnrestrictedScreenLeft; pf.top = df.top = of.top = mUnrestrictedScreenTop; - pf.right = df.right = of.right = cf.right = vf.right = mUnrestrictedScreenLeft - + mUnrestrictedScreenWidth; - pf.bottom = df.bottom = of.bottom = cf.bottom = mUnrestrictedScreenTop - + mUnrestrictedScreenHeight; + pf.right = df.right = of.right = mUnrestrictedScreenLeft + mUnrestrictedScreenWidth; + pf.bottom = df.bottom = of.bottom = mUnrestrictedScreenTop + mUnrestrictedScreenHeight; cf.bottom = vf.bottom = mStableBottom; + // Note: In Phone landscape mode, the button bar should also be excluded. + cf.right = vf.right = mStableRight; + cf.left = vf.left = mStableLeft; cf.top = vf.top = mStableTop; } else if (win == mStatusBar) { pf.left = df.left = of.left = mUnrestrictedScreenLeft;