Merge "Ignore rotations while the view is not yet attached" into sc-qpr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
509c8c269c
@@ -607,6 +607,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void destroyView() {
|
public void destroyView() {
|
||||||
|
setAutoHideController(/* autoHideController */ null);
|
||||||
mCommandQueue.removeCallback(this);
|
mCommandQueue.removeCallback(this);
|
||||||
mContext.getSystemService(WindowManager.class).removeViewImmediate(
|
mContext.getSystemService(WindowManager.class).removeViewImmediate(
|
||||||
mNavigationBarView.getRootView());
|
mNavigationBarView.getRootView());
|
||||||
@@ -946,6 +947,11 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRotationProposal(final int rotation, boolean isValid) {
|
public void onRotationProposal(final int rotation, boolean isValid) {
|
||||||
|
// The CommandQueue callbacks are added when the view is created to ensure we track other
|
||||||
|
// states, but until the view is attached (at the next traversal), the view's display is
|
||||||
|
// not valid. Just ignore the rotation in this case.
|
||||||
|
if (!mNavigationBarView.isAttachedToWindow()) return;
|
||||||
|
|
||||||
final int winRotation = mNavigationBarView.getDisplay().getRotation();
|
final int winRotation = mNavigationBarView.getDisplay().getRotation();
|
||||||
final boolean rotateSuggestionsDisabled = RotationButtonController
|
final boolean rotateSuggestionsDisabled = RotationButtonController
|
||||||
.hasDisable2RotateSuggestionFlag(mDisabledFlags2);
|
.hasDisable2RotateSuggestionFlag(mDisabledFlags2);
|
||||||
@@ -1525,7 +1531,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Sets {@link AutoHideController} to the navigation bar. */
|
/** Sets {@link AutoHideController} to the navigation bar. */
|
||||||
public void setAutoHideController(AutoHideController autoHideController) {
|
private void setAutoHideController(AutoHideController autoHideController) {
|
||||||
mAutoHideController = autoHideController;
|
mAutoHideController = autoHideController;
|
||||||
if (mAutoHideController != null) {
|
if (mAutoHideController != null) {
|
||||||
mAutoHideController.setNavigationBar(mAutoHideUiElement);
|
mAutoHideController.setNavigationBar(mAutoHideUiElement);
|
||||||
|
|||||||
@@ -395,7 +395,6 @@ public class NavigationBarController implements Callbacks,
|
|||||||
void removeNavigationBar(int displayId) {
|
void removeNavigationBar(int displayId) {
|
||||||
NavigationBar navBar = mNavigationBars.get(displayId);
|
NavigationBar navBar = mNavigationBars.get(displayId);
|
||||||
if (navBar != null) {
|
if (navBar != null) {
|
||||||
navBar.setAutoHideController(/* autoHideController */ null);
|
|
||||||
navBar.destroyView();
|
navBar.destroyView();
|
||||||
mNavigationBars.remove(displayId);
|
mNavigationBars.remove(displayId);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user