DO NOT MERGE Do not call drawableChanged pre Q

am: 843f9dee8b

Change-Id: Id54fa3b2327faec88c936228109643c8425eeb2a
This commit is contained in:
Vadim Caen
2019-07-24 16:17:49 -07:00
committed by android-build-merger
2 changed files with 18 additions and 2 deletions

View File

@@ -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;
}
}

View File

@@ -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();
}
}
}