Merge "Always allow back gesture when there are transient bars showing" am: 52e7eaf708 am: cbc1f5ca15
am: 6c3d98283c
Change-Id: I1bff99974a3b7c7494ead90065ee4a1c41d060b6
This commit is contained in:
@@ -16,6 +16,8 @@
|
|||||||
package com.android.systemui.statusbar.phone;
|
package com.android.systemui.statusbar.phone;
|
||||||
|
|
||||||
import static android.view.Display.INVALID_DISPLAY;
|
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.Context;
|
||||||
import android.content.pm.ParceledListSlice;
|
import android.content.pm.ParceledListSlice;
|
||||||
@@ -154,6 +156,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
|
|||||||
private boolean mIsAttached;
|
private boolean mIsAttached;
|
||||||
private boolean mIsGesturalModeEnabled;
|
private boolean mIsGesturalModeEnabled;
|
||||||
private boolean mIsEnabled;
|
private boolean mIsEnabled;
|
||||||
|
private boolean mIsInTransientImmersiveStickyState;
|
||||||
|
|
||||||
private InputMonitor mInputMonitor;
|
private InputMonitor mInputMonitor;
|
||||||
private InputEventReceiver mInputEventReceiver;
|
private InputEventReceiver mInputEventReceiver;
|
||||||
@@ -215,6 +218,12 @@ public class EdgeBackGestureHandler implements DisplayListener {
|
|||||||
updateCurrentUserResources(currentUserContext.getResources());
|
updateCurrentUserResources(currentUserContext.getResources());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onSystemUiVisibilityChanged(int systemUiVisibility) {
|
||||||
|
mIsInTransientImmersiveStickyState =
|
||||||
|
(systemUiVisibility & SYSTEM_UI_FLAG_IMMERSIVE_STICKY) != 0
|
||||||
|
&& (systemUiVisibility & NAVIGATION_BAR_TRANSIENT) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
private void disposeInputChannel() {
|
private void disposeInputChannel() {
|
||||||
if (mInputEventReceiver != null) {
|
if (mInputEventReceiver != null) {
|
||||||
mInputEventReceiver.dispose();
|
mInputEventReceiver.dispose();
|
||||||
@@ -315,13 +324,21 @@ public class EdgeBackGestureHandler implements DisplayListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isWithinTouchRegion(int x, int y) {
|
private boolean isWithinTouchRegion(int x, int y) {
|
||||||
|
// Disallow if over the IME
|
||||||
if (y > (mDisplaySize.y - Math.max(mImeHeight, mNavBarHeight))) {
|
if (y > (mDisplaySize.y - Math.max(mImeHeight, mNavBarHeight))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disallow if too far from the edge
|
||||||
if (x > mEdgeWidth + mLeftInset && x < (mDisplaySize.x - mEdgeWidth - mRightInset)) {
|
if (x > mEdgeWidth + mLeftInset && x < (mDisplaySize.x - mEdgeWidth - mRightInset)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Always allow if the user is in a transient sticky immersive state
|
||||||
|
if (mIsInTransientImmersiveStickyState) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
boolean isInExcludedRegion = mExcludeRegion.contains(x, y);
|
boolean isInExcludedRegion = mExcludeRegion.contains(x, y);
|
||||||
if (isInExcludedRegion) {
|
if (isInExcludedRegion) {
|
||||||
mOverviewProxyService.notifyBackAction(false /* completed */, -1, -1,
|
mOverviewProxyService.notifyBackAction(false /* completed */, -1, -1,
|
||||||
|
|||||||
@@ -539,6 +539,9 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
|
|||||||
}
|
}
|
||||||
mAutoHideController.touchAutoHide();
|
mAutoHideController.touchAutoHide();
|
||||||
}
|
}
|
||||||
|
if (mNavigationBarView != null) {
|
||||||
|
mNavigationBarView.onSystemUiVisibilityChanged(mSystemUiVisibility);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mLightBarController.onNavigationVisibilityChanged(
|
mLightBarController.onNavigationVisibilityChanged(
|
||||||
vis, mask, nbModeChanged, mNavigationBarMode, navbarColorManagedByIme);
|
vis, mask, nbModeChanged, mNavigationBarMode, navbarColorManagedByIme);
|
||||||
|
|||||||
@@ -349,6 +349,10 @@ public class NavigationBarView extends FrameLayout implements
|
|||||||
return super.onTouchEvent(event);
|
return super.onTouchEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onSystemUiVisibilityChanged(int systemUiVisibility) {
|
||||||
|
mEdgeBackGestureHandler.onSystemUiVisibilityChanged(systemUiVisibility);
|
||||||
|
}
|
||||||
|
|
||||||
void onBarTransition(int newMode) {
|
void onBarTransition(int newMode) {
|
||||||
if (newMode == MODE_OPAQUE) {
|
if (newMode == MODE_OPAQUE) {
|
||||||
// If the nav bar background is opaque, stop auto tinting since we know the icons are
|
// If the nav bar background is opaque, stop auto tinting since we know the icons are
|
||||||
|
|||||||
Reference in New Issue
Block a user