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

Commit 35002aa4 authored by Raj Yengisetty's avatar Raj Yengisetty Committed by Roman Birg
Browse files

SystemUI: Fix nav bar transparency when enabling software keys

Repro:
 - Boot device with hardware keys
 - Go to Settings -> Buttons and enable on-screen nav bar
 - Press home
 - Observe launcher now does not have transparent nav bar

Ticket: CYNGNOS-2553
Change-Id: I49d04384b72b02ecb432be650d46e136c982a3bd
(cherry picked from commit 0053be36)
parent ad283f0c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -157,6 +157,8 @@ public abstract class BaseStatusBar extends SystemUI implements
    private static final String BANNER_ACTION_SETUP =
            "com.android.systemui.statusbar.banner_action_setup";

    protected static final int SYSTEM_UI_VISIBILITY_MASK = 0xffffffff;

    private static final Uri SPAM_MESSAGE_URI = new Uri.Builder()
           .scheme(ContentResolver.SCHEME_CONTENT)
            .authority(SpamMessageProvider.AUTHORITY)
@@ -627,7 +629,7 @@ public abstract class BaseStatusBar extends SystemUI implements

        mSettingsObserver.onChange(false); // set up
        disable(switches[0], switches[6], false /* animate */);
        setSystemUiVisibility(switches[1], 0xffffffff);
        setSystemUiVisibility(switches[1], SYSTEM_UI_VISIBILITY_MASK);
        topAppWindowChanged(switches[2] != 0);
        // StatusBarManagerService has a back up of IME token and it's restored here.
        setImeWindowStatus(binders.get(0), switches[3], switches[4], switches[5] != 0);
+16 −6
Original line number Diff line number Diff line
@@ -536,7 +536,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,

        mNavigationBarView.setDisabledFlags(mDisabled1);
        mNavigationBarView.setBar(this);
        addNavigationBar();
        addNavigationBar(true); // dynamically adding nav bar, reset System UI visibility!
    }

    // ensure quick settings is disabled until the current user makes it through the setup wizard
@@ -814,7 +814,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        // TODO: use MediaSessionManager.SessionListener to hook us up to future updates
        // in session state

        addNavigationBar();
        addNavigationBar(false);

        // Developer options - Force Navigation bar
        try {
@@ -1568,16 +1568,26 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        }
    }

    private void prepareNavigationBarView() {
    private void prepareNavigationBarView(boolean forceReset) {
        mNavigationBarView.reorient();

        mNavigationBarView.setListeners(mRecentsClickListener, mRecentsPreloadOnTouchListener,
                mLongPressBackRecentsListener, mHomeActionListener, mLongPressHomeListener);
        mAssistManager.onConfigurationChanged();
        if (forceReset) {
            // Nav Bar was added dynamically - we need to reset the mSystemUiVisibility and call
            // setSystemUiVisibility so that mNavigationBarMode is set to the correct value
            int newVal = mSystemUiVisibility;
            mSystemUiVisibility = 0;
            setSystemUiVisibility(newVal, SYSTEM_UI_VISIBILITY_MASK);
            checkBarMode(mNavigationBarMode,
                    mNavigationBarWindowState, mNavigationBarView.getBarTransitions(),
                    mNoAnimationOnNextBarModeChange);
        }
    }

    // For small-screen devices (read: phones) that lack hardware navigation buttons
    private void addNavigationBar() {
    private void addNavigationBar(boolean forceReset) {
        if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + mNavigationBarView);
        if (mNavigationBarView == null) return;

@@ -1588,7 +1598,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
            return;
        }

        prepareNavigationBarView();
        prepareNavigationBarView(forceReset);

        mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams());
    }
@@ -1604,7 +1614,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
    private void repositionNavigationBar() {
        if (mNavigationBarView == null || !mNavigationBarView.isAttachedToWindow()) return;

        prepareNavigationBarView();
        prepareNavigationBarView(false);

        mWindowManager.updateViewLayout(mNavigationBarView, getNavigationBarLayoutParams());
    }