From d6e6e7235a7e5c82d64beada54ac89c2b1dec201 Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Fri, 21 Nov 2014 11:08:45 -0800 Subject: [PATCH] Make default windows features configurable. Bug: 18434078 Change-Id: I0bafce1a201088a8681f4b9e43237e23b49296a2 --- api/current.txt | 3 ++- core/java/android/view/Window.java | 26 ++++++++++++++++++++++++-- core/res/res/values-watch/config.xml | 3 +++ core/res/res/values/config.xml | 4 ++++ core/res/res/values/symbols.xml | 3 +++ 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/api/current.txt b/api/current.txt index fb26daf04abad..b0e11f57302c4 100644 --- a/api/current.txt +++ b/api/current.txt @@ -34456,6 +34456,7 @@ package android.view { method public final android.content.Context getContext(); method public abstract android.view.View getCurrentFocus(); method public abstract android.view.View getDecorView(); + method public static int getDefaultFeatures(android.content.Context); method public android.transition.Transition getEnterTransition(); method public android.transition.Transition getExitTransition(); method protected final int getFeatures(); @@ -34557,7 +34558,7 @@ package android.view { method public abstract void takeKeyEvents(boolean); method public abstract void takeSurface(android.view.SurfaceHolder.Callback2); method public abstract void togglePanel(int, android.view.KeyEvent); - field protected static final int DEFAULT_FEATURES = 65; // 0x41 + field protected static final deprecated int DEFAULT_FEATURES = 65; // 0x41 field public static final int FEATURE_ACTION_BAR = 8; // 0x8 field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9 field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java index 0076abff2f094..2e5c1e0a4b42c 100644 --- a/core/java/android/view/Window.java +++ b/core/java/android/view/Window.java @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.content.res.Configuration; +import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; @@ -155,6 +156,7 @@ public abstract class Window { "android:navigation:background"; /** The default features enabled */ + @Deprecated @SuppressWarnings({"PointlessBitwiseExpression"}) protected static final int DEFAULT_FEATURES = (1 << FEATURE_OPTIONS_PANEL) | (1 << FEATURE_CONTEXT_MENU); @@ -183,8 +185,8 @@ public abstract class Window { private boolean mSetCloseOnTouchOutside = false; private int mForcedWindowFlags = 0; - private int mFeatures = DEFAULT_FEATURES; - private int mLocalFeatures = DEFAULT_FEATURES; + private int mFeatures; + private int mLocalFeatures; private boolean mHaveWindowFormat = false; private boolean mHaveDimAmount = false; @@ -442,6 +444,7 @@ public abstract class Window { public Window(Context context) { mContext = context; + mFeatures = mLocalFeatures = getDefaultFeatures(context); } /** @@ -1269,6 +1272,25 @@ public abstract class Window { return mFeatures; } + /** + * Return the feature bits set by default on a window. + * @param context The context used to access resources + */ + public static int getDefaultFeatures(Context context) { + int features = 0; + + final Resources res = context.getResources(); + if (res.getBoolean(com.android.internal.R.bool.config_defaultWindowFeatureOptionsPanel)) { + features |= 1 << FEATURE_OPTIONS_PANEL; + } + + if (res.getBoolean(com.android.internal.R.bool.config_defaultWindowFeatureContextMenu)) { + features |= 1 << FEATURE_CONTEXT_MENU; + } + + return features; + } + /** * Query for the availability of a certain feature. * diff --git a/core/res/res/values-watch/config.xml b/core/res/res/values-watch/config.xml index 6052fb0f33ffc..3eede32bd344c 100644 --- a/core/res/res/values-watch/config.xml +++ b/core/res/res/values-watch/config.xml @@ -40,4 +40,7 @@ Reduced intentionally for watches to retain minimal memory footprint --> 1 + + false + false diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 6e635f310d6c1..bb2ee48e82a78 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1927,6 +1927,10 @@ 12 + + true + true +