diff options
Diffstat (limited to 'src/com/android')
3 files changed, 35 insertions, 6 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index d02355ee..3286659d 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -25,6 +25,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PermissionInfo; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Typeface; import android.graphics.drawable.Icon; @@ -187,6 +188,20 @@ public class GrantPermissionsActivity extends OverlayTouchActivity } @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + // This is just gross - we need to relayout the window as + // dialog width may be different in landscape vs portrait + // which affect the min window height needed to show all + // content. We have to re-add the window to force it to be + // resized if needed. The way the permission grant dialog + // is implemented is not correct and has to be rewritten. + View decor = getWindow().getDecorView(); + getWindowManager().removeViewImmediate(decor); + getWindowManager().addView(decor, decor.getLayoutParams()); + } + + @Override public boolean dispatchTouchEvent(MotionEvent ev) { View rootView = getWindow().getDecorView(); if (rootView.getTop() != 0) { diff --git a/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java b/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java index c9ccf9c1..1af400b3 100644 --- a/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java +++ b/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java @@ -17,7 +17,6 @@ package com.android.packageinstaller.permission.ui; import android.content.Context; import android.util.AttributeSet; -import android.view.View; import android.widget.FrameLayout; /** @@ -27,13 +26,10 @@ import android.widget.FrameLayout; * but allows the view to grow downwards for animation. */ public class ManualLayoutFrame extends FrameLayout { - private int mDesiredHeight; private int mHeight; private int mWidth; - private View mOffsetView; - public ManualLayoutFrame(Context context, AttributeSet attrs) { super(context, attrs); setClipChildren(false); @@ -47,10 +43,29 @@ public class ManualLayoutFrame extends FrameLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mWidth != 0) { - // Keep the width constant to avoid weirdness. + int newWidth = mWidth; + final int widthMode = MeasureSpec.getMode(widthMeasureSpec); + switch (widthMode) { + case MeasureSpec.AT_MOST: { + newWidth = Math.min(mWidth, MeasureSpec.getSize(widthMeasureSpec)); + } break; + case MeasureSpec.EXACTLY: { + newWidth = MeasureSpec.getSize(widthMeasureSpec); + } break; + } + // If the width changes we have to re-evaluate the height + if (newWidth != mWidth) { + mWidth = newWidth; + mHeight = 0; + } widthMeasureSpec = MeasureSpec.makeMeasureSpec(mWidth, MeasureSpec.EXACTLY); } + + // Let the content measure how much it needs to be fully shown + heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + mDesiredHeight = getMeasuredHeight(); if (mHeight == 0 && mDesiredHeight != 0) { // Record the first non-zero width and height, this will be the height henceforth. diff --git a/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java b/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java index 75fbf5bf..c34a62a3 100644 --- a/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java +++ b/src/com/android/packageinstaller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java @@ -20,7 +20,6 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.content.Context; -import android.content.res.Resources; import android.graphics.drawable.Icon; import android.os.Bundle; import android.util.SparseArray; |