From f1114a452eeb61235f2d253f528016fdf20a55da Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Thu, 11 Dec 2025 14:34:39 +0100 Subject: [PATCH] Move navigation bar to bottom: adjust the keyboard size on devices with 3-button navigation (#2543) --- .../Move-navigation-bar-to-bottom.patch | 25 +++---------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index 8bcbc6a6..f5313576 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -75,7 +75,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../ui/appmenu/AppMenuHandlerImpl.java | 10 ++ .../EdgeToEdgeControllerImpl.java | 1 + .../ui/edge_to_edge/EdgeToEdgeUtils.java | 2 + - ...rredIMEWindowInsetApplicationCallback.java | 17 ++ + ...rredIMEWindowInsetApplicationCallback.java | 7 + .../omnibox/LocationBarCoordinator.java | 1 + ...mniboxSuggestionsDropdownEmbedderImpl.java | 32 ++++ .../suggestions/AutocompleteCoordinator.java | 16 ++ @@ -104,7 +104,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 + - 91 files changed, 1084 insertions(+), 95 deletions(-) + 91 files changed, 1074 insertions(+), 95 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 @@ -2391,7 +2391,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow @Override public void onPrepare(WindowInsetsAnimationCompat animation) { if ((animation.getTypeMask() & WindowInsetsCompat.Type.ime()) == 0) return; -@@ -121,11 +126,14 @@ public class DeferredIMEWindowInsetApplicationCallback +@@ -121,11 +126,13 @@ public class DeferredIMEWindowInsetApplicationCallback public WindowInsetsCompat onApplyWindowInsets( View view, WindowInsetsCompat windowInsetsCompat) { int newKeyboardHeight = 0; @@ -2401,27 +2401,10 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow Insets systemBarInsets = windowInsetsCompat.getInsets(WindowInsetsCompat.Type.systemBars()); newKeyboardHeight = imeInsets.bottom - systemBarInsets.bottom; -+ if (!hasTappableNavigationBarFromInsets(windowInsetsCompat)) -+ mSystemBarInsetsBottom = systemBarInsets.bottom; ++ mSystemBarInsetsBottom = systemBarInsets.bottom; // Since the ime insets are greater than 0, the keyboard is showing, but its height is // being suppressed in that this class deliberately wants to avoid application resizing. -@@ -173,6 +181,15 @@ public class DeferredIMEWindowInsetApplicationCallback - return builder.build(); - } - -+ static boolean hasTappableNavigationBarFromInsets(WindowInsetsCompat insets) { -+ Insets navigationBarInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars()); -+ Insets tappableElementInsets = insets.getInsets(WindowInsetsCompat.Type.tappableElement()); -+ // Return whether there is any overlap in navigation bar and tappable element insets. -+ return (navigationBarInsets.bottom > 0 && tappableElementInsets.bottom > 0) -+ || (navigationBarInsets.left > 0 && tappableElementInsets.left > 0) -+ || (navigationBarInsets.right > 0 && tappableElementInsets.right > 0); -+ } -+ - private void commitKeyboardHeight(int newKeyboardHeight) { - mKeyboardHeight = newKeyboardHeight; - mDeferredKeyboardHeight = NO_DEFERRED_KEYBOARD_HEIGHT; diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java