OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/tabs/tab_drag_controller.h" | 5 #include "chrome/browser/ui/views/tabs/tab_drag_controller.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 } | 364 } |
365 started_drag_ = true; | 365 started_drag_ = true; |
366 Attach(source_tabstrip_, gfx::Point()); | 366 Attach(source_tabstrip_, gfx::Point()); |
367 if (static_cast<int>(drag_data_.size()) == | 367 if (static_cast<int>(drag_data_.size()) == |
368 GetModel(source_tabstrip_)->count()) { | 368 GetModel(source_tabstrip_)->count()) { |
369 if (was_source_maximized_ || was_source_fullscreen_) { | 369 if (was_source_maximized_ || was_source_fullscreen_) { |
370 did_restore_window_ = true; | 370 did_restore_window_ = true; |
371 // When all tabs in a maximized browser are dragged the browser gets | 371 // When all tabs in a maximized browser are dragged the browser gets |
372 // restored during the drag and maximized back when the drag ends. | 372 // restored during the drag and maximized back when the drag ends. |
373 views::Widget* widget = GetAttachedBrowserWidget(); | 373 views::Widget* widget = GetAttachedBrowserWidget(); |
374 const int last_tabstrip_width = attached_tabstrip_->tab_area_width(); | 374 const int last_tabstrip_width = attached_tabstrip_->GetTabAreaWidth(); |
375 std::vector<gfx::Rect> drag_bounds = CalculateBoundsForDraggedTabs(); | 375 std::vector<gfx::Rect> drag_bounds = CalculateBoundsForDraggedTabs(); |
376 OffsetX(GetAttachedDragPoint(point_in_screen).x(), &drag_bounds); | 376 OffsetX(GetAttachedDragPoint(point_in_screen).x(), &drag_bounds); |
377 gfx::Rect new_bounds(CalculateDraggedBrowserBounds(source_tabstrip_, | 377 gfx::Rect new_bounds(CalculateDraggedBrowserBounds(source_tabstrip_, |
378 point_in_screen, | 378 point_in_screen, |
379 &drag_bounds)); | 379 &drag_bounds)); |
380 new_bounds.Offset(-widget->GetRestoredBounds().x() + | 380 new_bounds.Offset(-widget->GetRestoredBounds().x() + |
381 point_in_screen.x() - | 381 point_in_screen.x() - |
382 mouse_offset_.x(), 0); | 382 mouse_offset_.x(), 0); |
383 widget->SetVisibilityChangedAnimationsEnabled(false); | 383 widget->SetVisibilityChangedAnimationsEnabled(false); |
384 widget->Restore(); | 384 widget->Restore(); |
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1017 const gfx::Point& point_in_screen) { | 1017 const gfx::Point& point_in_screen) { |
1018 if (GetModel(attached_tabstrip_)->count() == | 1018 if (GetModel(attached_tabstrip_)->count() == |
1019 static_cast<int>(drag_data_.size())) { | 1019 static_cast<int>(drag_data_.size())) { |
1020 // All the tabs in a browser are being dragged but all the tabs weren't | 1020 // All the tabs in a browser are being dragged but all the tabs weren't |
1021 // initially being dragged. For this to happen the user would have to | 1021 // initially being dragged. For this to happen the user would have to |
1022 // start dragging a set of tabs, the other tabs close, then detach. | 1022 // start dragging a set of tabs, the other tabs close, then detach. |
1023 RunMoveLoop(GetWindowOffset(point_in_screen)); | 1023 RunMoveLoop(GetWindowOffset(point_in_screen)); |
1024 return; | 1024 return; |
1025 } | 1025 } |
1026 | 1026 |
1027 const int last_tabstrip_width = attached_tabstrip_->tab_area_width(); | 1027 const int last_tabstrip_width = attached_tabstrip_->GetTabAreaWidth(); |
1028 std::vector<gfx::Rect> drag_bounds = CalculateBoundsForDraggedTabs(); | 1028 std::vector<gfx::Rect> drag_bounds = CalculateBoundsForDraggedTabs(); |
1029 OffsetX(GetAttachedDragPoint(point_in_screen).x(), &drag_bounds); | 1029 OffsetX(GetAttachedDragPoint(point_in_screen).x(), &drag_bounds); |
1030 | 1030 |
1031 gfx::Vector2d drag_offset; | 1031 gfx::Vector2d drag_offset; |
1032 Browser* browser = CreateBrowserForDrag( | 1032 Browser* browser = CreateBrowserForDrag( |
1033 attached_tabstrip_, point_in_screen, &drag_offset, &drag_bounds); | 1033 attached_tabstrip_, point_in_screen, &drag_offset, &drag_bounds); |
1034 | 1034 |
1035 BrowserView* dragged_browser_view = | 1035 BrowserView* dragged_browser_view = |
1036 BrowserView::GetBrowserViewForBrowser(browser); | 1036 BrowserView::GetBrowserViewForBrowser(browser); |
1037 views::Widget* dragged_widget = dragged_browser_view->GetWidget(); | 1037 views::Widget* dragged_widget = dragged_browser_view->GetWidget(); |
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 new_bounds.Offset(0, -source->kNewTabButtonVerticalOffset); | 1694 new_bounds.Offset(0, -source->kNewTabButtonVerticalOffset); |
1695 return new_bounds; | 1695 return new_bounds; |
1696 } | 1696 } |
1697 | 1697 |
1698 void TabDragController::AdjustBrowserAndTabBoundsForDrag( | 1698 void TabDragController::AdjustBrowserAndTabBoundsForDrag( |
1699 int last_tabstrip_width, | 1699 int last_tabstrip_width, |
1700 const gfx::Point& point_in_screen, | 1700 const gfx::Point& point_in_screen, |
1701 std::vector<gfx::Rect>* drag_bounds) { | 1701 std::vector<gfx::Rect>* drag_bounds) { |
1702 attached_tabstrip_->InvalidateLayout(); | 1702 attached_tabstrip_->InvalidateLayout(); |
1703 attached_tabstrip_->DoLayout(); | 1703 attached_tabstrip_->DoLayout(); |
1704 const int dragged_tabstrip_width = attached_tabstrip_->tab_area_width(); | 1704 const int dragged_tabstrip_width = attached_tabstrip_->GetTabAreaWidth(); |
1705 | 1705 |
1706 // If the new tabstrip is smaller than the old resize the tabs. | 1706 // If the new tabstrip is smaller than the old resize the tabs. |
1707 if (dragged_tabstrip_width < last_tabstrip_width) { | 1707 if (dragged_tabstrip_width < last_tabstrip_width) { |
1708 const float leading_ratio = | 1708 const float leading_ratio = |
1709 drag_bounds->front().x() / static_cast<float>(last_tabstrip_width); | 1709 drag_bounds->front().x() / static_cast<float>(last_tabstrip_width); |
1710 *drag_bounds = CalculateBoundsForDraggedTabs(); | 1710 *drag_bounds = CalculateBoundsForDraggedTabs(); |
1711 | 1711 |
1712 if (drag_bounds->back().right() < dragged_tabstrip_width) { | 1712 if (drag_bounds->back().right() < dragged_tabstrip_width) { |
1713 const int delta_x = | 1713 const int delta_x = |
1714 std::min(static_cast<int>(leading_ratio * dragged_tabstrip_width), | 1714 std::min(static_cast<int>(leading_ratio * dragged_tabstrip_width), |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1813 it != browser_list->end(); ++it) { | 1813 it != browser_list->end(); ++it) { |
1814 if ((*it)->tab_strip_model()->empty()) | 1814 if ((*it)->tab_strip_model()->empty()) |
1815 exclude.insert((*it)->window()->GetNativeWindow()); | 1815 exclude.insert((*it)->window()->GetNativeWindow()); |
1816 } | 1816 } |
1817 #endif | 1817 #endif |
1818 return GetLocalProcessWindowAtPoint(host_desktop_type_, | 1818 return GetLocalProcessWindowAtPoint(host_desktop_type_, |
1819 screen_point, | 1819 screen_point, |
1820 exclude); | 1820 exclude); |
1821 | 1821 |
1822 } | 1822 } |
OLD | NEW |