From 4adfcacf0ee8fa8dac42d04fdb29b8b5fda7d700 Mon Sep 17 00:00:00 2001 From: "sangwoo.ko" Date: Tue, 18 Apr 2023 10:43:48 +0900 Subject: [PATCH] Update shadow layer bounds when tab's layer bounds changes When scrolling, tab's bounds doesn't change while the layer's bounds changes. In order to synchronize shadow_layer_'s bounds to it, we should layout it from OnLayerBoundsChanged(). --- browser/ui/views/tabs/brave_tab.cc | 22 ++++++++++++++-------- browser/ui/views/tabs/brave_tab.h | 4 +++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/browser/ui/views/tabs/brave_tab.cc b/browser/ui/views/tabs/brave_tab.cc index 5111e2826da1..d49d38fa2fcb 100644 --- a/browser/ui/views/tabs/brave_tab.cc +++ b/browser/ui/views/tabs/brave_tab.cc @@ -178,6 +178,20 @@ void BraveTab::UpdateIconVisibility() { } } +void BraveTab::OnLayerBoundsChanged(const gfx::Rect& old_bounds, + ui::PropertyChangeReason reason) { + Tab::OnLayerBoundsChanged(old_bounds, reason); + + if (!base::FeatureList::IsEnabled(tabs::features::kBraveVerticalTabs)) { + return; + } + + if (shadow_layer_ && shadow_layer_->parent() && + shadow_layer_->parent() == layer()->parent()) { + LayoutShadowLayer(); + } +} + void BraveTab::Layout() { Tab::Layout(); if (IsAtMinWidthForVerticalTabStrip()) { @@ -211,14 +225,6 @@ void BraveTab::ReorderChildLayers(ui::Layer* parent_layer) { layer()->parent()->StackBelow(shadow_layer_.get(), layer()); } -void BraveTab::OnBoundsChanged(const gfx::Rect& previous_bounds) { - Tab::OnBoundsChanged(previous_bounds); - - if (shadow_layer_ && shadow_layer_->parent()) { - LayoutShadowLayer(); - } -} - void BraveTab::MaybeAdjustLeftForPinnedTab(gfx::Rect* bounds, int visual_width) const { if (!base::FeatureList::IsEnabled(tabs::features::kBraveVerticalTabs) || diff --git a/browser/ui/views/tabs/brave_tab.h b/browser/ui/views/tabs/brave_tab.h index fac8c62dd7f7..e6292620d6c0 100644 --- a/browser/ui/views/tabs/brave_tab.h +++ b/browser/ui/views/tabs/brave_tab.h @@ -35,10 +35,12 @@ class BraveTab : public Tab { bool ShouldRenderAsNormalTab() const override; void Layout() override; void ReorderChildLayers(ui::Layer* parent_layer) override; - void OnBoundsChanged(const gfx::Rect& previous_bounds) override; void MaybeAdjustLeftForPinnedTab(gfx::Rect* bounds, int visual_width) const override; + void OnLayerBoundsChanged(const gfx::Rect& old_bounds, + ui::PropertyChangeReason reason) override; + private: bool IsAtMinWidthForVerticalTabStrip() const;