Fix setSystemBarsAppearances
We should compare the existing appearance with the new appearance which is about to be applied to insetsFlags.appearance, not the raw appearance from the argument, before deciding if we can skip it. Bug: 224613946 Fix: 226227461 Test: atest WindowInsetsControllerTests#testSetSystemBarsAppearance Change-Id: I1283089a3dadf4ca2c3136f80d1472a34351306a
This commit is contained in:
@@ -171,8 +171,9 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host {
|
||||
public void setSystemBarsAppearance(int appearance, int mask) {
|
||||
mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_APPEARANCE_CONTROLLED;
|
||||
final InsetsFlags insetsFlags = mViewRoot.mWindowAttributes.insetsFlags;
|
||||
if (insetsFlags.appearance != appearance) {
|
||||
insetsFlags.appearance = (insetsFlags.appearance & ~mask) | (appearance & mask);
|
||||
final int newAppearance = (insetsFlags.appearance & ~mask) | (appearance & mask);
|
||||
if (insetsFlags.appearance != newAppearance) {
|
||||
insetsFlags.appearance = newAppearance;
|
||||
mViewRoot.mWindowAttributesChanged = true;
|
||||
mViewRoot.scheduleTraversals();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user