From 1d527a3694420f775eba8cce7b3e78e72a82d5a4 Mon Sep 17 00:00:00 2001 From: samartnik Date: Wed, 12 May 2021 12:56:51 -0400 Subject: [PATCH] [Android] Hide Tab Groups bottom controls in scrolling mode --- .../BraveScrollingBottomViewResourceFrameLayout.java | 10 ++++++++-- .../toolbar/bottom/BraveBottomControlsMediator.java | 11 +++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/android/java/org/chromium/chrome/browser/toolbar/bottom/BraveScrollingBottomViewResourceFrameLayout.java b/android/java/org/chromium/chrome/browser/toolbar/bottom/BraveScrollingBottomViewResourceFrameLayout.java index 4a99b23b244..a889544e044 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/bottom/BraveScrollingBottomViewResourceFrameLayout.java +++ b/android/java/org/chromium/chrome/browser/toolbar/bottom/BraveScrollingBottomViewResourceFrameLayout.java @@ -84,14 +84,20 @@ public class BraveScrollingBottomViewResourceFrameLayout mBottomControlsCoordinatorSupplier = bottomControlsCoordinatorSupplier; braveBottomControlsCoordinator().getBottomToolbarVisibleSupplier().addObserver( mCallbackController.makeCancelable((visible) -> { - if (mBottomToolbar != null) { + // Only make changes if visibility changed. + if (mBottomToolbar != null + && (mBottomToolbar.getVisibility() + != (visible ? View.VISIBLE : View.GONE))) { mBottomToolbar.setVisibility(visible ? View.VISIBLE : View.GONE); getResourceAdapter().dropCachedBitmap(); } })); braveBottomControlsCoordinator().getTabGroupUiVisibleSupplier().addObserver( mCallbackController.makeCancelable((visible) -> { - if (mBottomContainerSlot != null) { + // Only make changes if visibility changed. + if (mBottomContainerSlot != null + && (mBottomContainerSlot.getVisibility() + != (visible ? View.VISIBLE : View.GONE))) { mBottomContainerSlot.setVisibility(visible ? View.VISIBLE : View.GONE); getResourceAdapter().dropCachedBitmap(); } diff --git a/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsMediator.java b/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsMediator.java index ff15037e016..7887aead8bb 100644 --- a/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsMediator.java +++ b/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BraveBottomControlsMediator.java @@ -44,6 +44,7 @@ class BraveBottomControlsMediator extends BottomControlsMediator { // We should keep it visible if bottom toolbar is visible. super.setBottomControlsVisible(mBottomToolbarVisibleSupplier.get() || visible); mTabGroupUiVisibleSupplier.set(visible); + updateYOffset(); } public void setBottomToolbarVisible(boolean visible) { @@ -51,6 +52,7 @@ class BraveBottomControlsMediator extends BottomControlsMediator { // We should keep it visible if tag group UI is visible. super.setBottomControlsVisible(mTabGroupUiVisibleSupplier.get() || visible); mBottomToolbarVisibleSupplier.set(visible); + updateYOffset(); } public ObservableSupplierImpl getBottomToolbarVisibleSupplier() { @@ -66,4 +68,13 @@ class BraveBottomControlsMediator extends BottomControlsMediator { mBottomControlsHeight = bothBottomControlsVisible ? mBottomControlsHeightDouble : mBottomControlsHeightSingle; } + + private void updateYOffset() { + // This indicates that both controls are visible, but bottom toolbar has already been + // scrolled down, so we move scroll further for tab groups control. + if (mBottomControlsHeight == mBottomControlsHeightDouble + && mBrowserControlsSizer.getBottomControlOffset() == mBottomControlsHeightSingle) { + mModel.set(BottomControlsProperties.Y_OFFSET, mBottomControlsHeightDouble); + } + } }