diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 1e78153147180..1926ea230bb1b 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -1215,7 +1215,6 @@ public class InputMethodService extends AbstractInputMethodService { WindowManager.LayoutParams.TYPE_INPUT_METHOD, Gravity.BOTTOM, false); mWindow.getWindow().getAttributes().setFitInsetsTypes(statusBars() | navigationBars()); mWindow.getWindow().getAttributes().setFitInsetsSides(Side.all() & ~Side.BOTTOM); - mWindow.getWindow().getAttributes().setFitInsetsIgnoringVisibility(true); // IME layout should always be inset by navigation bar, no matter its current visibility, // unless automotive requests it. Automotive devices may request the navigation bar to be diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index daec4d7617420..29881cc761b28 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -549,11 +549,10 @@ public class DisplayPolicy { synchronized (mLock) { mDisplayContent.calculateSystemGestureExclusion( excludedRegion, null /* outUnrestricted */); - final boolean sideAllowed = mNavigationBarAlwaysShowOnSideGesture - || mNavigationBarPosition == NAV_BAR_RIGHT; - if (mNavigationBar != null && sideAllowed - && !mSystemGestures.currentGestureStartedInRegion( - excludedRegion)) { + final boolean excluded = + mSystemGestures.currentGestureStartedInRegion(excludedRegion); + if (mNavigationBar != null && (mNavigationBarPosition == NAV_BAR_RIGHT + || !excluded && mNavigationBarAlwaysShowOnSideGesture)) { requestTransientBars(mNavigationBar); } checkAltBarSwipeForTransientBars(ALT_BAR_RIGHT); @@ -567,11 +566,10 @@ public class DisplayPolicy { synchronized (mLock) { mDisplayContent.calculateSystemGestureExclusion( excludedRegion, null /* outUnrestricted */); - final boolean sideAllowed = mNavigationBarAlwaysShowOnSideGesture - || mNavigationBarPosition == NAV_BAR_LEFT; - if (mNavigationBar != null && sideAllowed - && !mSystemGestures.currentGestureStartedInRegion( - excludedRegion)) { + final boolean excluded = + mSystemGestures.currentGestureStartedInRegion(excludedRegion); + if (mNavigationBar != null && (mNavigationBarPosition == NAV_BAR_LEFT + || !excluded && mNavigationBarAlwaysShowOnSideGesture)) { requestTransientBars(mNavigationBar); } checkAltBarSwipeForTransientBars(ALT_BAR_LEFT);