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