diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java index 6ea7aec7ba0c..80a7a4ae2f6a 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java @@ -274,11 +274,21 @@ public class NavigationBarView extends FrameLayout implements }; private final OnComputeInternalInsetsListener mOnComputeInternalInsetsListener = info -> { - // When the nav bar is in 2-button or 3-button mode, or when IME is visible in fully - // gestural mode, the entire nav bar should be touchable. + // When the nav bar is in 2-button or 3-button mode, or when the back button is force-shown + // while in gesture nav in SUW, the entire nav bar should be touchable. if (!mEdgeBackGestureHandler.isHandlingGestures()) { - info.setTouchableInsets(InternalInsetsInfo.TOUCHABLE_INSETS_FRAME); - return; + // We're in 2/3 button mode OR back button force-shown in SUW + if (!mImeVisible) { + // IME not showing, take all touches + info.setTouchableInsets(InternalInsetsInfo.TOUCHABLE_INSETS_FRAME); + return; + } + + if (!isImeRenderingNavButtons()) { + // IME showing but not drawing any buttons, take all touches + info.setTouchableInsets(InternalInsetsInfo.TOUCHABLE_INSETS_FRAME); + return; + } } // When in gestural and the IME is showing, don't use the nearest region since it will take @@ -775,14 +785,10 @@ public class NavigationBarView extends FrameLayout implements updateRecentsIcon(); - boolean isImeRenderingNavButtons = mImeDrawsImeNavBar - && mImeCanRenderGesturalNavButtons - && (mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_IME_SHOWN) != 0; - // Update IME button visibility, a11y and rotate button always overrides the appearance boolean disableImeSwitcher = (mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_IME_SWITCHER_SHOWN) == 0 - || isImeRenderingNavButtons; + || isImeRenderingNavButtons(); mContextualButtonGroup.setButtonVisibility(R.id.ime_switcher, !disableImeSwitcher); mBarTransitions.reapplyDarkIntensity(); @@ -799,7 +805,7 @@ public class NavigationBarView extends FrameLayout implements boolean disableBack = !useAltBack && (mEdgeBackGestureHandler.isHandlingGestures() || ((mDisabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0)) - || isImeRenderingNavButtons; + || isImeRenderingNavButtons(); // When screen pinning, don't hide back and home when connected service or back and // recents buttons when disconnected from launcher service in screen pinning mode, @@ -832,6 +838,15 @@ public class NavigationBarView extends FrameLayout implements notifyActiveTouchRegions(); } + /** + * Returns whether the IME is currently visible and drawing the nav buttons. + */ + private boolean isImeRenderingNavButtons() { + return mImeDrawsImeNavBar + && mImeCanRenderGesturalNavButtons + && (mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_IME_SHOWN) != 0; + } + @VisibleForTesting boolean isRecentsButtonDisabled() { return mUseCarModeUi || !isOverviewEnabled() |