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

Commit 6c3d9828 authored by Winson Chung's avatar Winson Chung Committed by android-build-merger
Browse files

Merge "Always allow back gesture when there are transient bars showing" am: 52e7eaf7

am: cbc1f5ca

Change-Id: Id60288440c91085be26952ff12d08f1875d21964
parents 18f82935 cbc1f5ca
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.phone;

import static android.view.Display.INVALID_DISPLAY;
import static android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
import static android.view.View.NAVIGATION_BAR_TRANSIENT;

import android.content.Context;
import android.content.pm.ParceledListSlice;
@@ -154,6 +156,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
    private boolean mIsAttached;
    private boolean mIsGesturalModeEnabled;
    private boolean mIsEnabled;
    private boolean mIsInTransientImmersiveStickyState;

    private InputMonitor mInputMonitor;
    private InputEventReceiver mInputEventReceiver;
@@ -215,6 +218,12 @@ public class EdgeBackGestureHandler implements DisplayListener {
        updateCurrentUserResources(currentUserContext.getResources());
    }

    public void onSystemUiVisibilityChanged(int systemUiVisibility) {
        mIsInTransientImmersiveStickyState =
                (systemUiVisibility & SYSTEM_UI_FLAG_IMMERSIVE_STICKY) != 0
                && (systemUiVisibility & NAVIGATION_BAR_TRANSIENT) != 0;
    }

    private void disposeInputChannel() {
        if (mInputEventReceiver != null) {
            mInputEventReceiver.dispose();
@@ -315,13 +324,21 @@ public class EdgeBackGestureHandler implements DisplayListener {
    }

    private boolean isWithinTouchRegion(int x, int y) {
        // Disallow if over the IME
        if (y > (mDisplaySize.y - Math.max(mImeHeight, mNavBarHeight))) {
            return false;
        }

        // Disallow if too far from the edge
        if (x > mEdgeWidth + mLeftInset && x < (mDisplaySize.x - mEdgeWidth - mRightInset)) {
            return false;
        }

        // Always allow if the user is in a transient sticky immersive state
        if (mIsInTransientImmersiveStickyState) {
            return true;
        }

        boolean isInExcludedRegion = mExcludeRegion.contains(x, y);
        if (isInExcludedRegion) {
            mOverviewProxyService.notifyBackAction(false /* completed */, -1, -1,
+3 −0
Original line number Diff line number Diff line
@@ -539,6 +539,9 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
                }
                mAutoHideController.touchAutoHide();
            }
            if (mNavigationBarView != null) {
                mNavigationBarView.onSystemUiVisibilityChanged(mSystemUiVisibility);
            }
        }
        mLightBarController.onNavigationVisibilityChanged(
                vis, mask, nbModeChanged, mNavigationBarMode, navbarColorManagedByIme);
+4 −0
Original line number Diff line number Diff line
@@ -348,6 +348,10 @@ public class NavigationBarView extends FrameLayout implements
        return super.onTouchEvent(event);
    }

    void onSystemUiVisibilityChanged(int systemUiVisibility) {
        mEdgeBackGestureHandler.onSystemUiVisibilityChanged(systemUiVisibility);
    }

    void onBarTransition(int newMode) {
        if (newMode == MODE_OPAQUE) {
            // If the nav bar background is opaque, stop auto tinting since we know the icons are