| Index: chrome/browser/ui/views/tabs/tab_strip.cc
|
| diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
|
| index 0df1f6f8db610b94a44a8bddb29d9d089c30813c..5f8c0c711a3b40095608b19f49ff8ae28ee44085 100644
|
| --- a/chrome/browser/ui/views/tabs/tab_strip.cc
|
| +++ b/chrome/browser/ui/views/tabs/tab_strip.cc
|
| @@ -109,12 +109,6 @@ const int kMouseMoveCountBeforeConsiderReal = 3;
|
| // Amount of time we delay before resizing after a close from a touch.
|
| const int kTouchResizeLayoutTimeMS = 2000;
|
|
|
| -// Amount to adjust the clip by when the tab is stacked before the active index.
|
| -const int kStackedTabLeftClip = 20;
|
| -
|
| -// Amount to adjust the clip by when the tab is stacked after the active index.
|
| -const int kStackedTabRightClip = 20;
|
| -
|
| #if defined(OS_MACOSX)
|
| const int kPinnedToNonPinnedOffset = 2;
|
| #else
|
| @@ -1165,6 +1159,11 @@ bool TabStrip::ShouldHideCloseButtonForInactiveTabs() {
|
| switches::kDisableHideInactiveStackedTabCloseButtons);
|
| }
|
|
|
| +bool TabStrip::MaySetClip() {
|
| + // Only touch layout needs to restrict the clip.
|
| + return touch_layout_ || IsStackingDraggedTabs();
|
| +}
|
| +
|
| void TabStrip::SelectTab(Tab* tab) {
|
| int model_index = GetModelIndexOfTab(tab);
|
| if (IsValidModelIndex(model_index))
|
| @@ -1346,9 +1345,11 @@ void TabStrip::OnMouseEventInTab(views::View* source,
|
| UpdateStackedLayoutFromMouseEvent(source, event);
|
| }
|
|
|
| -bool TabStrip::ShouldPaintTab(const Tab* tab, gfx::Rect* clip) {
|
| - // Only touch layout needs to restrict the clip.
|
| - if (!touch_layout_ && !IsStackingDraggedTabs())
|
| +bool TabStrip::ShouldPaintTab(
|
| + const Tab* tab,
|
| + const base::Callback<gfx::Path(const gfx::Size&)>& border_callback,
|
| + gfx::Path* clip) {
|
| + if (!MaySetClip())
|
| return true;
|
|
|
| int index = GetModelIndexOfTab(tab);
|
| @@ -1369,9 +1370,8 @@ bool TabStrip::ShouldPaintTab(const Tab* tab, gfx::Rect* clip) {
|
| if (current_x > next_x)
|
| return true; // Can happen during dragging.
|
|
|
| - clip->SetRect(
|
| - 0, 0, next_x - current_x + kStackedTabLeftClip,
|
| - tab_at(index)->height());
|
| + *clip = border_callback.Run(tab_at(index + 1)->size());
|
| + clip->offset(SkIntToScalar(next_x - current_x), 0);
|
| } else if (index > active_index && index > 0) {
|
| const gfx::Rect& previous_bounds(tab_at(index - 1)->bounds());
|
| const int previous_x = previous_bounds.x();
|
| @@ -1383,9 +1383,8 @@ bool TabStrip::ShouldPaintTab(const Tab* tab, gfx::Rect* clip) {
|
|
|
| if (previous_bounds.right() - GetLayoutConstant(TABSTRIP_TAB_OVERLAP) !=
|
| current_x) {
|
| - int x = previous_bounds.right() - current_x - kStackedTabRightClip;
|
| - const gfx::Rect& tab_bounds(tab_at(index)->bounds());
|
| - clip->SetRect(x, 0, tab_bounds.width() - x, tab_bounds.height());
|
| + *clip = border_callback.Run(tab_at(index - 1)->size());
|
| + clip->offset(SkIntToScalar(previous_x - current_x), 0);
|
| }
|
| }
|
| return true;
|
|
|