DO NOT MERGE Do not call drawableChanged pre Q
am: 843f9dee8b
Change-Id: Id54fa3b2327faec88c936228109643c8425eeb2a
This commit is contained in:
@@ -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)
|
||||
@@ -5104,6 +5117,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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user