Skip to content

Commit

Permalink
Fixed new tab is not shown when it's first tab (uplift to 1.75.x) (#2…
Browse files Browse the repository at this point in the history
…7514)

Uplift of #27477 (squashed) to release
  • Loading branch information
brave-builds authored Feb 5, 2025
1 parent a6a5798 commit ff38707
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 22 deletions.
14 changes: 0 additions & 14 deletions browser/ui/views/frame/vertical_tab_strip_region_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,6 @@ class VerticalTabStripScrollContentsView : public views::View {
// Prevent reentrance caused by container_->Layout()
base::AutoReset<bool> in_preferred_size_change(&in_preferred_size_changed_,
true);
container_->set_layout_dirty({});
container_->DeprecatedLayoutImmediately();
}

Expand Down Expand Up @@ -913,13 +912,6 @@ gfx::Size VerticalTabStripRegionView::GetMinimumSize() const {
}

void VerticalTabStripRegionView::Layout(PassKey) {
if (!layout_dirty_ && last_size_ == size()) {
return;
}

layout_dirty_ = false;
last_size_ = size();

// As we have to update ScrollView's viewport size and its contents size,
// laying out children manually will be more handy.
const auto contents_bounds = GetContentsBounds();
Expand Down Expand Up @@ -983,7 +975,6 @@ void VerticalTabStripRegionView::OnBrowserPanelsMoved() {
}

void VerticalTabStripRegionView::UpdateLayout(bool in_destruction) {
layout_dirty_ = true;
if (tabs::utils::ShouldShowVerticalTabs(browser_) && !in_destruction) {
if (!Contains(original_region_view_)) {
original_parent_of_region_view_ = original_region_view_->parent();
Expand Down Expand Up @@ -1132,11 +1123,6 @@ void VerticalTabStripRegionView::OnBoundsChanged(
#endif
}

void VerticalTabStripRegionView::PreferredSizeChanged() {
layout_dirty_ = true;
views::View::PreferredSizeChanged();
}

void VerticalTabStripRegionView::AddedToWidget() {
View::AddedToWidget();
mouse_watcher_ = std::make_unique<MouseWatcher>(this);
Expand Down
10 changes: 2 additions & 8 deletions browser/ui/views/frame/vertical_tab_strip_region_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,6 @@ class VerticalTabStripRegionView : public views::View,

int GetTabStripViewportMaxHeight() const;

void set_layout_dirty(base::PassKey<VerticalTabStripScrollContentsView>) {
layout_dirty_ = true;
}

void ResetExpandedWidth();
bool IsMenuShowing() const;

Expand All @@ -103,7 +99,6 @@ class VerticalTabStripRegionView : public views::View,
void OnMouseExited(const ui::MouseEvent& event) override;
void OnMouseEntered(const ui::MouseEvent& event) override;
void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
void PreferredSizeChanged() override;
void AddedToWidget() override;

// views::ResizeAreaDelegate
Expand Down Expand Up @@ -138,6 +133,8 @@ class VerticalTabStripRegionView : public views::View,
OriginalTabSearchButton);
FRIEND_TEST_ALL_PREFIXES(VerticalTabStripBrowserTest, ExpandedState);
FRIEND_TEST_ALL_PREFIXES(VerticalTabStripBrowserTest, ExpandedWidth);
FRIEND_TEST_ALL_PREFIXES(VerticalTabStripBrowserTest,
LayoutAfterFirstTabCreation);

FullscreenController* GetFullscreenController() const;
bool IsTabFullscreen() const;
Expand Down Expand Up @@ -224,9 +221,6 @@ class VerticalTabStripRegionView : public views::View,

bool mouse_events_for_test_ = false;

bool layout_dirty_ = false;
gfx::Size last_size_;

gfx::SlideAnimation width_animation_{this};

base::ScopedObservation<views::Widget, views::WidgetObserver>
Expand Down
40 changes: 40 additions & 0 deletions browser/ui/views/tabs/vertical_tab_strip_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@
#include "brave/browser/ui/views/frame/vertical_tab_strip_widget_delegate_view.h"
#include "brave/browser/ui/views/tabs/brave_browser_tab_strip_controller.h"
#include "brave/browser/ui/views/tabs/brave_compound_tab_container.h"
#include "brave/browser/ui/views/tabs/brave_new_tab_button.h"
#include "brave/browser/ui/views/tabs/brave_tab_context_menu_contents.h"
#include "brave/browser/ui/views/tabs/brave_tab_strip.h"
#include "brave/browser/ui/views/tabs/brave_tab_strip_layout_helper.h"
#include "brave/browser/ui/views/tabs/switches.h"
#include "brave/browser/ui/views/tabs/vertical_tab_utils.h"
#include "brave/components/constants/pref_names.h"
Expand Down Expand Up @@ -503,6 +505,44 @@ IN_PROC_BROWSER_TEST_F(VerticalTabStripBrowserTest, LayoutSanity) {
}
}

IN_PROC_BROWSER_TEST_F(VerticalTabStripBrowserTest,
LayoutAfterFirstTabCreation) {
ToggleVerticalTabStrip();

auto* widget_delegate_view =
browser_view()->vertical_tab_strip_widget_delegate_view();
ASSERT_TRUE(widget_delegate_view);

auto* region_view = widget_delegate_view->vertical_tab_strip_region_view();
ASSERT_TRUE(region_view);
ASSERT_EQ(VerticalTabStripRegionView::State::kExpanded, region_view->state());

auto* model = browser()->tab_strip_model();
model->SetTabPinned(0, true);
ASSERT_EQ(1, model->count());

browser_view()->tabstrip()->StopAnimating(/* layout= */ true);

int contents_view_height = region_view->contents_view_->height();
AppendTab(browser());
browser_view()->tabstrip()->StopAnimating(/* layout= */ true);

// When first tab is added, height should have tab's height plush top & bottom
// margin.
contents_view_height +=
(tabs::kVerticalTabHeight + tabs::kMarginForVerticalTabContainers * 2);
EXPECT_EQ(region_view->contents_view_->height(), contents_view_height);

AppendTab(browser());
browser_view()->tabstrip()->StopAnimating(/* layout= */ true);

// When second tab is added, height should be increased with tab height plus
// tab spacing.
contents_view_height +=
(tabs::kVerticalTabHeight + tabs::kVerticalTabsSpacing);
EXPECT_EQ(region_view->contents_view_->height(), contents_view_height);
}

IN_PROC_BROWSER_TEST_F(VerticalTabStripBrowserTest, ScrollBarVisibility) {
ToggleVerticalTabStrip();

Expand Down

0 comments on commit ff38707

Please sign in to comment.