Chromium Code Reviews| Index: chrome/browser/ui/views/tabs/tab_drag_controller.cc |
| diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller.cc b/chrome/browser/ui/views/tabs/tab_drag_controller.cc |
| index 9ce7433b3deb5db8f8e70cb2e7af2e94f9b5a44c..b3f47d9d78537cd40f13d7add000d91bf76b25aa 100644 |
| --- a/chrome/browser/ui/views/tabs/tab_drag_controller.cc |
| +++ b/chrome/browser/ui/views/tabs/tab_drag_controller.cc |
| @@ -796,8 +796,8 @@ void TabDragController::MoveAttached(const gfx::Point& point_in_screen) { |
| if ((abs(point_in_screen.x() - last_move_screen_loc_) > threshold || |
| (initial_move_ && !AreTabsConsecutive()))) { |
| TabStripModel* attached_model = GetModel(attached_tabstrip_); |
| - gfx::Rect bounds = GetDraggedViewTabStripBounds(dragged_view_point); |
| - int to_index = GetInsertionIndexForDraggedBounds(bounds); |
| + int to_index = GetInsertionIndexForDraggedBounds( |
| + GetDraggedViewTabStripBounds(dragged_view_point)); |
|
Peter Kasting
2014/06/17 03:16:18
I didn't think the old code was bad, but while wor
|
| bool do_move = true; |
| // While dragging within a tabstrip the expectation is the insertion index |
| // is based on the left edge of the tabs being dragged. OTOH when dragging |
| @@ -1004,8 +1004,8 @@ void TabDragController::Attach(TabStrip* attached_tabstrip, |
| tab_strip_point.set_x( |
| attached_tabstrip_->GetMirroredXInView(tab_strip_point.x())); |
| tab_strip_point.Offset(0, -mouse_offset_.y()); |
| - gfx::Rect bounds = GetDraggedViewTabStripBounds(tab_strip_point); |
| - int index = GetInsertionIndexForDraggedBounds(bounds); |
| + int index = GetInsertionIndexForDraggedBounds( |
| + GetDraggedViewTabStripBounds(tab_strip_point)); |
| attach_index_ = index; |
| attach_x_ = tab_strip_point.x(); |
| base::AutoReset<bool> setter(&is_mutating_, true); |
| @@ -1266,6 +1266,11 @@ int TabDragController::GetInsertionIndexFrom(const gfx::Rect& dragged_bounds, |
| int TabDragController::GetInsertionIndexForDraggedBounds( |
| const gfx::Rect& dragged_bounds) const { |
| + // If the strip has no tabs, the only position to insert at is 0. |
| + const int tab_count = attached_tabstrip_->tab_count(); |
| + if (!tab_count) |
| + return 0; |
| + |
| int index = -1; |
| if (attached_tabstrip_->touch_layout_.get()) { |
| index = GetInsertionIndexForDraggedBoundsStacked(dragged_bounds); |
| @@ -1285,14 +1290,9 @@ int TabDragController::GetInsertionIndexForDraggedBounds( |
| index = GetInsertionIndexFrom(dragged_bounds, 0, 1); |
| } |
| if (index == -1) { |
| - int tab_count = attached_tabstrip_->tab_count(); |
| - int right_tab_x = tab_count == 0 ? 0 : |
| + const int last_tab_right = |
| attached_tabstrip_->ideal_bounds(tab_count - 1).right(); |
| - if (dragged_bounds.right() > right_tab_x) { |
| - index = GetModel(attached_tabstrip_)->count(); |
| - } else { |
| - index = 0; |
| - } |
| + index = (dragged_bounds.right() > last_tab_right) ? tab_count : 0; |
|
Peter Kasting
2014/06/17 03:16:18
Note that this assumes attached_tabstrip_->tab_cou
sky
2014/06/17 15:42:42
Yes, they should be equal (with the exception of t
|
| } |
| if (!drag_data_[0].attached_tab) { |
| @@ -1800,7 +1800,7 @@ gfx::Rect TabDragController::CalculateDraggedBrowserBounds( |
| // maximized windows, add an additional vertical offset extracted from the tab |
| // strip. |
| if (source->GetWidget()->IsMaximized()) |
| - new_bounds.Offset(0, -source->button_v_offset()); |
| + new_bounds.Offset(0, -source->kNewTabButtonVerticalOffset); |
| return new_bounds; |
| } |