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

Commit 083163aa authored by Raj Yengisetty's avatar Raj Yengisetty Committed by Rajesh Yengisetty
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

Change-Id: I49d04384b72b02ecb432be650d46e136c982a3bd
parent 98693485
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -150,6 +150,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)
@@ -527,7 +529,7 @@ public abstract class BaseStatusBar extends SystemUI implements
        createAndAddWindows();

        disable(switches[0], 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);
+14 −6
Original line number Diff line number Diff line
@@ -585,7 +585,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        mNavigationBarView.setDisabledFlags(mDisabled);
        mNavigationBarView.setBar(this);
        mNavigationBarView.updateResources(getNavbarThemedResources());
        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
@@ -821,7 +821,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);

        SettingsObserver observer = new SettingsObserver(mHandler);
        observer.observe();
@@ -1517,16 +1517,24 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        }
    }

    private void prepareNavigationBarView() {
    private void prepareNavigationBarView(boolean forceReset) {
        mNavigationBarView.reorient();
        mNavigationBarView.setListeners(mRecentsClickListener, mRecentsPreloadOnTouchListener,
                mLongPressBackRecentsListener, mHomeActionListener);

        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);
        }

        updateSearchPanel();
    }

    // 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;

@@ -1537,7 +1545,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
            return;
        }

        prepareNavigationBarView();
        prepareNavigationBarView(forceReset);

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

        prepareNavigationBarView();
        prepareNavigationBarView(false);

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