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

Commit d5ef5465 authored by John Spurlock's avatar John Spurlock
Browse files

NavBar: Slippery on the unsecured lock screen.

The NavBar is always non-slippery, except when:
 - the notification shade is showing
 - the 3 buttons (back,home,recents) are disabled

Also fix unrelated bug that ignored the "show panel delay"
before the first config change.

Bug: 6614842
Change-Id: Ib40adaef122b563809398fdebbd8a88d8f0c7ffd
parent c07dc743
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -225,11 +225,28 @@ public class NavigationBarView extends LinearLayout {
        final boolean disableRecent = ((disabledFlags & View.STATUS_BAR_DISABLE_RECENT) != 0);
        final boolean disableBack = ((disabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0);

        setSlippery(disableHome && disableRecent && disableBack);

        getBackButton()   .setVisibility(disableBack       ? View.INVISIBLE : View.VISIBLE);
        getHomeButton()   .setVisibility(disableHome       ? View.INVISIBLE : View.VISIBLE);
        getRecentsButton().setVisibility(disableRecent     ? View.INVISIBLE : View.VISIBLE);
    }

    public void setSlippery(boolean newSlippery) {
        WindowManager.LayoutParams lp = (WindowManager.LayoutParams) getLayoutParams();
        if (lp != null) {
            boolean oldSlippery = (lp.flags & WindowManager.LayoutParams.FLAG_SLIPPERY) != 0;
            if (!oldSlippery && newSlippery) {
                lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
            } else if (oldSlippery && !newSlippery) {
                lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
            } else {
                return;
            }
            WindowManagerImpl.getDefault().updateViewLayout(this, lp);
        }
    }

    public void setMenuVisibility(final boolean show) {
        setMenuVisibility(show, false);
    }
+12 −18
Original line number Diff line number Diff line
@@ -376,6 +376,8 @@ public class PhoneStatusBar extends BaseStatusBar {
            mIntruderAlertView.setBar(this);
        }

        updateShowSearchHoldoff();

        mStatusBarView.mService = this;

        mChoreographer = Choreographer.getInstance();
@@ -663,7 +665,6 @@ public class PhoneStatusBar extends BaseStatusBar {

        lp.setTitle("NavigationBar");
        lp.windowAnimations = 0;

        return lp;
    }

@@ -808,6 +809,10 @@ public class PhoneStatusBar extends BaseStatusBar {
    @Override
    protected void onConfigurationChanged(Configuration newConfig) {
        updateRecentsPanel();
        updateShowSearchHoldoff();
    }

    private void updateShowSearchHoldoff() {
        mShowSearchHoldoff = mContext.getResources().getInteger(
            R.integer.config_show_search_delay);
    }
@@ -1174,7 +1179,8 @@ public class PhoneStatusBar extends BaseStatusBar {

        mExpandedVisible = true;
        mPile.setLayoutTransitionsEnabled(true);
        makeSlippery(mNavigationBarView, true);
        if (mNavigationBarView != null)
            mNavigationBarView.setSlippery(true);

        updateCarrierLabelVisibility(true);

@@ -1198,19 +1204,6 @@ public class PhoneStatusBar extends BaseStatusBar {
        visibilityChanged(true);
    }

    private static void makeSlippery(View view, boolean slippery) {
        if (view == null) {
            return;
        }
        WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
        if (slippery) {
            lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
        } else {
            lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
        }
        WindowManagerImpl.getDefault().updateViewLayout(view, lp);
    }

    public void animateExpand() {
        if (SPEW) Slog.d(TAG, "Animate expand: expanded=" + mExpanded);
        if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
@@ -1295,8 +1288,9 @@ public class PhoneStatusBar extends BaseStatusBar {
        }
        mExpandedVisible = false;
        mPile.setLayoutTransitionsEnabled(false);
        if (mNavigationBarView != null)
            mNavigationBarView.setSlippery(false);
        visibilityChanged(false);
        makeSlippery(mNavigationBarView, false);

        // Shrink the window to the size of the status bar only
        WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams();