Notify visibility change if source visibility is changed

This makes view root dispatch the up-to-date WindowInsets to the app.

Fix: 166619182
Test: Steps in the bug (comment#12)
Change-Id: I8c47e3be84357f65084a7d9994f7d7b68f15611e
(cherry picked from commit fd94351305)
This commit is contained in:
Tiger Huang
2020-09-03 23:01:21 +08:00
committed by Adrian Roos
parent a428448b1e
commit e8bd5284d3

View File

@@ -113,13 +113,20 @@ public class InsetsSourceConsumer {
InsetsState.typeToString(control.getType()),
mController.getHost().getRootViewTitle()));
}
// We are loosing control
if (mSourceControl == null) {
// We are loosing control
mController.notifyControlRevoked(this);
// Restore server visibility.
mState.getSource(getType()).setVisible(
mController.getLastDispatchedState().getSource(getType()).isVisible());
// Check if we need to restore server visibility.
final InsetsSource source = mState.getSource(mType);
final boolean serverVisibility =
mController.getLastDispatchedState().getSourceOrDefaultVisibility(mType);
if (source.isVisible() != serverVisibility) {
source.setVisible(serverVisibility);
mController.notifyVisibilityChanged();
}
// For updateCompatSysUiVisibility
applyLocalVisibilityOverride();
} else {
// We are gaining control, and need to run an animation since previous state