Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 902aa77e authored by Winson Chung's avatar Winson Chung
Browse files

Ignore rotations while the view is not yet attached

Fixes: 191227230
Fixes: 198988927
Test: atest SystemUITests

Change-Id: I813d631fd3a5ccf98010f5a114e702208839714e
Merged-In: I813d631fd3a5ccf98010f5a114e702208839714e
(cherry picked from commit 08fcb4dc)
parent 2b879d36
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -607,6 +607,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
    }

    public void destroyView() {
        setAutoHideController(/* autoHideController */ null);
        mCommandQueue.removeCallback(this);
        mContext.getSystemService(WindowManager.class).removeViewImmediate(
                mNavigationBarView.getRootView());
@@ -946,6 +947,11 @@ public class NavigationBar implements View.OnAttachStateChangeListener,

    @Override
    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 boolean rotateSuggestionsDisabled = RotationButtonController
                .hasDisable2RotateSuggestionFlag(mDisabledFlags2);
@@ -1525,7 +1531,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
    }

    /** Sets {@link AutoHideController} to the navigation bar. */
    public void setAutoHideController(AutoHideController autoHideController) {
    private void setAutoHideController(AutoHideController autoHideController) {
        mAutoHideController = autoHideController;
        if (mAutoHideController != null) {
            mAutoHideController.setNavigationBar(mAutoHideUiElement);
+0 −1
Original line number Diff line number Diff line
@@ -395,7 +395,6 @@ public class NavigationBarController implements Callbacks,
    void removeNavigationBar(int displayId) {
        NavigationBar navBar = mNavigationBars.get(displayId);
        if (navBar != null) {
            navBar.setAutoHideController(/* autoHideController */ null);
            navBar.destroyView();
            mNavigationBars.remove(displayId);
        }