summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vadim Caen <caen@google.com> 2019-07-24 16:38:36 -0700
committer android-build-merger <android-build-merger@google.com> 2019-07-24 16:38:36 -0700
commit87f4d350ec52370e819fc1d92a384c60420e2f04 (patch)
tree84cc2911f956ce7f34b92323c212a8fb014f8f74
parent6106b5f02d14f66ba4a74d8612bee543263ec389 (diff)
parent605e74c9306899bdf34c90f962ca72e50ba64045 (diff)
DO NOT MERGE Do not call drawableChanged pre Q am: 843f9dee8b
am: 605e74c930 Change-Id: Ia5c148adbe6eebcc3d444844e7e67283d1a07403
-rw-r--r--core/java/android/view/View.java15
-rw-r--r--core/java/com/android/internal/policy/DecorView.java5
2 files changed, 18 insertions, 2 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index fd4dafc81f36..b2449d5b5340 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -967,6 +967,19 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
static boolean sBrokenInsetsDispatch;
+ /**
+ * Prior to Q, calling
+ * {@link com.android.internal.policy.DecorView#setBackgroundDrawable(Drawable)}
+ * did not call update the window format so the opacity of the background was not correctly
+ * applied to the window. Some applications rely on this misbehavior to work properly.
+ * <p>
+ * From Q, {@link com.android.internal.policy.DecorView#setBackgroundDrawable(Drawable)} is
+ * the same as {@link com.android.internal.policy.DecorView#setWindowBackground(Drawable)}
+ * which updates the window format.
+ * @hide
+ */
+ protected static boolean sBrokenWindowBackground;
+
/** @hide */
@IntDef({NOT_FOCUSABLE, FOCUSABLE, FOCUSABLE_AUTO})
@Retention(RetentionPolicy.SOURCE)
@@ -5223,6 +5236,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
sBrokenInsetsDispatch = ViewRootImpl.sNewInsetsMode != NEW_INSETS_MODE_FULL
|| targetSdkVersion < Build.VERSION_CODES.Q;
+ sBrokenWindowBackground = targetSdkVersion < Build.VERSION_CODES.Q;
+
sCompatibilityDone = true;
}
}
diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java
index fe66cf9aab7d..7c52a40d4494 100644
--- a/core/java/com/android/internal/policy/DecorView.java
+++ b/core/java/com/android/internal/policy/DecorView.java
@@ -983,13 +983,14 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
@Override
public void setBackgroundDrawable(Drawable background) {
-
// TODO: This should route through setWindowBackground, but late in the release to make this
// change.
if (mOriginalBackgroundDrawable != background) {
mOriginalBackgroundDrawable = background;
updateBackgroundDrawable();
- drawableChanged();
+ if (!View.sBrokenWindowBackground) {
+ drawableChanged();
+ }
}
}