| 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 5269e9947f96702fd54e6fc6d967b17fed866020..175f9961b247fa8368c3845ce132e8e920df90e9 100644
|
| --- a/chrome/browser/ui/views/tabs/tab_strip.cc
|
| +++ b/chrome/browser/ui/views/tabs/tab_strip.cc
|
| @@ -1178,16 +1178,17 @@ void TabStrip::OnMouseEventInTab(views::View* source,
|
| }
|
|
|
| bool TabStrip::ShouldPaintTab(const Tab* tab, gfx::Rect* clip) {
|
| + const bool dragging = drag_controller_ && drag_controller_->started_drag();
|
| // Only touch layout needs to restrict the clip.
|
| - if (!touch_layout_ && !IsStackingDraggedTabs())
|
| + if (!touch_layout_ && !dragging)
|
| return true;
|
|
|
| int index = GetModelIndexOfTab(tab);
|
| if (index == -1)
|
| return true; // Tab is closing, paint it all.
|
|
|
| - int active_index = IsStackingDraggedTabs() ?
|
| - controller_->GetActiveIndex() : touch_layout_->active_index();
|
| + int active_index =
|
| + dragging ? controller_->GetActiveIndex() : touch_layout_->active_index();
|
| if (active_index == tab_count())
|
| active_index--;
|
|
|
| @@ -1195,23 +1196,28 @@ bool TabStrip::ShouldPaintTab(const Tab* tab, gfx::Rect* clip) {
|
| if (tab_at(index)->x() == tab_at(index + 1)->x())
|
| return false;
|
|
|
| - if (tab_at(index)->x() > tab_at(index + 1)->x())
|
| - return true; // Can happen during dragging.
|
| -
|
| - clip->SetRect(
|
| - 0, 0, tab_at(index + 1)->x() - tab_at(index)->x() + kStackedTabLeftClip,
|
| - tab_at(index)->height());
|
| + if (tab_at(index)->x() > tab_at(index + 1)->x()) {
|
| + // Can happen during dragging.
|
| + int x = tab_at(index)->x() - tab_at(index + 1)->x();
|
| + clip->SetRect(x, 0, tab_at(index)->width() - x, tab_at(index)->height());
|
| + } else {
|
| + clip->SetRect(0, 0, tab_at(index + 1)->x() - tab_at(index)->x() +
|
| + kStackedTabLeftClip,
|
| + tab_at(index)->height());
|
| + }
|
| } else if (index > active_index && index > 0) {
|
| const gfx::Rect& tab_bounds(tab_at(index)->bounds());
|
| const gfx::Rect& previous_tab_bounds(tab_at(index - 1)->bounds());
|
| if (tab_bounds.x() == previous_tab_bounds.x())
|
| return false;
|
|
|
| - if (tab_bounds.x() < previous_tab_bounds.x())
|
| - return true; // Can happen during dragging.
|
| -
|
| - if (previous_tab_bounds.right() - GetLayoutConstant(TABSTRIP_TAB_OVERLAP) !=
|
| - tab_bounds.x()) {
|
| + if (tab_bounds.x() < previous_tab_bounds.x()) {
|
| + // Can happen during dragging.
|
| + int x = previous_tab_bounds.x() - tab_bounds.x();
|
| + clip->SetRect(x, 0, tab_bounds.width() - x, tab_bounds.height());
|
| + } else if (previous_tab_bounds.right() -
|
| + GetLayoutConstant(TABSTRIP_TAB_OVERLAP) !=
|
| + tab_bounds.x()) {
|
| int x = previous_tab_bounds.right() - tab_bounds.x() -
|
| kStackedTabRightClip;
|
| clip->SetRect(x, 0, tab_bounds.width() - x, tab_bounds.height());
|
| @@ -1751,12 +1757,6 @@ void TabStrip::StackDraggedTabs(int delta) {
|
| SchedulePaint();
|
| }
|
|
|
| -bool TabStrip::IsStackingDraggedTabs() const {
|
| - return drag_controller_.get() && drag_controller_->started_drag() &&
|
| - (drag_controller_->move_behavior() ==
|
| - TabDragController::MOVE_VISIBILE_TABS);
|
| -}
|
| -
|
| void TabStrip::LayoutDraggedTabsAt(const Tabs& tabs,
|
| Tab* active_tab,
|
| const gfx::Point& location,
|
|
|