From a688e03bcbca270bf7e04726bfd4541bfbcdc40c Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Fri, 24 Jul 2026 06:56:37 +0200 Subject: [PATCH] Move navigation bar to bottom: preserve keyboard insets in overlays-content mode Do not clear the application bottom inset when the virtual keyboard uses OVERLAYS_CONTENT. The bottom-toolbar workaround is only required for keyboard modes that resize Chromium content. Overlay mode owns its keyboard geometry and the protected keyboard implementation needs the original inset to track the IME transition consistently. Keep the existing inset suppression for all non-overlay keyboard modes. Test: Verified on Android with the bottom toolbar enabled across keyboard open and close transitions. --- build/patches/Move-navigation-bar-to-bottom.patch | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index e0a825d9..2becb0d8 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../ChromeAccessibilitySettingsDelegate.java | 70 +++++++++ .../HeadlessBrowserControlsStateProvider.java | 5 + .../BottomBarContainerCoordinator.java | 7 +- - .../compositor/CompositorViewHolder.java | 7 + + .../compositor/CompositorViewHolder.java | 8 + .../layouts/LayoutManagerChrome.java | 12 +- .../layouts/LayoutManagerChromeTablet.java | 7 +- .../layouts/ToolbarSwipeLayout.java | 14 +- @@ -110,7 +110,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 17 ++ .../renderer/core/frame/viewport_data.cc | 1 + - 97 files changed, 1111 insertions(+), 107 deletions(-) + 97 files changed, 1112 insertions(+), 107 deletions(-) create mode 100644 chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc @@ -962,11 +962,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp if (forwarder != null) { forwarder.setCurrentTouchOffsetX(left); forwarder.setCurrentTouchOffsetY(top); -@@ -1043,6 +1047,9 @@ public class CompositorViewHolder extends FrameLayout +@@ -1043,6 +1047,10 @@ public class CompositorViewHolder extends FrameLayout mApplicationBottomInsetSupplier != null ? mApplicationBottomInsetSupplier.getInsets().webContentsHeightInset : 0; -+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { ++ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled() ++ && mVirtualKeyboardMode != VirtualKeyboardMode.OVERLAYS_CONTENT) { + keyboardInset = 0; + }