Chromium Code Reviews| 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 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 375 point_in_screen.x() - | 375 point_in_screen.x() - | 
| 376 mouse_offset_.x(), 0); | 376 mouse_offset_.x(), 0); | 
| 377 widget->SetVisibilityChangedAnimationsEnabled(false); | 377 widget->SetVisibilityChangedAnimationsEnabled(false); | 
| 378 widget->Restore(); | 378 widget->Restore(); | 
| 379 widget->SetBounds(new_bounds); | 379 widget->SetBounds(new_bounds); | 
| 380 AdjustBrowserAndTabBoundsForDrag(last_tabstrip_width, | 380 AdjustBrowserAndTabBoundsForDrag(last_tabstrip_width, | 
| 381 point_in_screen, | 381 point_in_screen, | 
| 382 &drag_bounds); | 382 &drag_bounds); | 
| 383 widget->SetVisibilityChangedAnimationsEnabled(true); | 383 widget->SetVisibilityChangedAnimationsEnabled(true); | 
| 384 } | 384 } | 
| 385 RunMoveLoop(GetWindowOffset(point_in_screen)); | 385 RunMoveLoop(GetWindowOffset(start_point_in_screen_)); | 
| 
 
tapted
2016/03/10 11:51:18
I think this should land first and separately with
 
themblsha
2016/03/10 17:18:58
Without this fix the DetachToBrowserTabDragControl
 
tapted
2016/03/11 09:38:28
The problem currently is that it's hard for a revi
 
themblsha
2016/04/05 17:20:42
Added this comment:
      // Always use the start
 
 | |
| 386 return; | 386 return; | 
| 387 } | 387 } | 
| 388 } | 388 } | 
| 389 | 389 | 
| 390 ContinueDragging(point_in_screen); | 390 ContinueDragging(point_in_screen); | 
| 391 } | 391 } | 
| 392 | 392 | 
| 393 void TabDragController::EndDrag(EndDragReason reason) { | 393 void TabDragController::EndDrag(EndDragReason reason) { | 
| 394 TRACE_EVENT0("views", "TabDragController::EndDrag"); | 394 TRACE_EVENT0("views", "TabDragController::EndDrag"); | 
| 395 | 395 | 
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 517 return; | 517 return; | 
| 518 old_focused_view->GetFocusManager()->SetFocusedView(old_focused_view); | 518 old_focused_view->GetFocusManager()->SetFocusedView(old_focused_view); | 
| 519 } | 519 } | 
| 520 | 520 | 
| 521 bool TabDragController::CanStartDrag(const gfx::Point& point_in_screen) const { | 521 bool TabDragController::CanStartDrag(const gfx::Point& point_in_screen) const { | 
| 522 // Determine if the mouse has moved beyond a minimum elasticity distance in | 522 // Determine if the mouse has moved beyond a minimum elasticity distance in | 
| 523 // any direction from the starting point. | 523 // any direction from the starting point. | 
| 524 static const int kMinimumDragDistance = 10; | 524 static const int kMinimumDragDistance = 10; | 
| 525 int x_offset = abs(point_in_screen.x() - start_point_in_screen_.x()); | 525 int x_offset = abs(point_in_screen.x() - start_point_in_screen_.x()); | 
| 526 int y_offset = abs(point_in_screen.y() - start_point_in_screen_.y()); | 526 int y_offset = abs(point_in_screen.y() - start_point_in_screen_.y()); | 
| 527 return sqrt(pow(static_cast<float>(x_offset), 2) + | 527 bool result = sqrt(pow(static_cast<float>(x_offset), 2) + | 
| 
 
tapted
2016/03/10 11:51:18
nit: this change not needed
 
themblsha
2016/03/10 17:18:58
Done.
 
 | |
| 528 pow(static_cast<float>(y_offset), 2)) > kMinimumDragDistance; | 528 pow(static_cast<float>(y_offset), 2)) > kMinimumDragDistance; | 
| 529 return result; | |
| 529 } | 530 } | 
| 530 | 531 | 
| 531 void TabDragController::ContinueDragging(const gfx::Point& point_in_screen) { | 532 void TabDragController::ContinueDragging(const gfx::Point& point_in_screen) { | 
| 532 TRACE_EVENT1("views", "TabDragController::ContinueDragging", | 533 TRACE_EVENT1("views", "TabDragController::ContinueDragging", | 
| 533 "point_in_screen", point_in_screen.ToString()); | 534 "point_in_screen", point_in_screen.ToString()); | 
| 534 | 535 | 
| 535 DCHECK(attached_tabstrip_); | 536 DCHECK(attached_tabstrip_); | 
| 536 | 537 | 
| 537 TabStrip* target_tabstrip = detach_behavior_ == DETACHABLE ? | 538 TabStrip* target_tabstrip = detach_behavior_ == DETACHABLE ? | 
| 538 GetTargetTabStripForPoint(point_in_screen) : source_tabstrip_; | 539 GetTargetTabStripForPoint(point_in_screen) : source_tabstrip_; | 
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 601 // observer so we don't get notified and process the event. | 602 // observer so we don't get notified and process the event. | 
| 602 #if defined(USE_ASH) | 603 #if defined(USE_ASH) | 
| 603 move_loop_widget_->RemoveObserver(this); | 604 move_loop_widget_->RemoveObserver(this); | 
| 604 move_loop_widget_ = nullptr; | 605 move_loop_widget_ = nullptr; | 
| 605 #endif // USE_ASH | 606 #endif // USE_ASH | 
| 606 views::Widget* browser_widget = GetAttachedBrowserWidget(); | 607 views::Widget* browser_widget = GetAttachedBrowserWidget(); | 
| 607 // Need to release the drag controller before starting the move loop as it's | 608 // Need to release the drag controller before starting the move loop as it's | 
| 608 // going to trigger capture lost, which cancels drag. | 609 // going to trigger capture lost, which cancels drag. | 
| 609 attached_tabstrip_->ReleaseDragController(); | 610 attached_tabstrip_->ReleaseDragController(); | 
| 610 target_tabstrip->OwnDragController(this); | 611 target_tabstrip->OwnDragController(this); | 
| 612 | |
| 
 
tapted
2016/03/10 11:51:18
nit: remove added line
 
themblsha
2016/03/10 17:18:58
Done.
 
 | |
| 611 // Disable animations so that we don't see a close animation on aero. | 613 // Disable animations so that we don't see a close animation on aero. | 
| 612 browser_widget->SetVisibilityChangedAnimationsEnabled(false); | 614 browser_widget->SetVisibilityChangedAnimationsEnabled(false); | 
| 613 if (can_release_capture_) | 615 if (can_release_capture_) | 
| 614 browser_widget->ReleaseCapture(); | 616 browser_widget->ReleaseCapture(); | 
| 615 else | 617 else | 
| 616 target_tabstrip->GetWidget()->SetCapture(attached_tabstrip_); | 618 target_tabstrip->GetWidget()->SetCapture(attached_tabstrip_); | 
| 617 | 619 | 
| 618 // The window is going away. Since the drag is still on going we don't want | 620 // The window is going away. Since the drag is still on going we don't want | 
| 619 // that to effect the position of any windows. | 621 // that to effect the position of any windows. | 
| 620 SetWindowPositionManaged(browser_widget->GetNativeWindow(), false); | 622 SetWindowPositionManaged(browser_widget->GetNativeWindow(), false); | 
| (...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1807 // window which was used for dragging is not hidden once all of its tabs are | 1809 // window which was used for dragging is not hidden once all of its tabs are | 
| 1808 // attached to another browser window in DragBrowserToNewTabStrip(). | 1810 // attached to another browser window in DragBrowserToNewTabStrip(). | 
| 1809 // TODO(pkotwicz): Fix this properly (crbug.com/358482) | 1811 // TODO(pkotwicz): Fix this properly (crbug.com/358482) | 
| 1810 for (auto* browser : *BrowserList::GetInstance()) { | 1812 for (auto* browser : *BrowserList::GetInstance()) { | 
| 1811 if (browser->tab_strip_model()->empty()) | 1813 if (browser->tab_strip_model()->empty()) | 
| 1812 exclude.insert(browser->window()->GetNativeWindow()); | 1814 exclude.insert(browser->window()->GetNativeWindow()); | 
| 1813 } | 1815 } | 
| 1814 #endif | 1816 #endif | 
| 1815 return GetLocalProcessWindowAtPoint(screen_point, exclude); | 1817 return GetLocalProcessWindowAtPoint(screen_point, exclude); | 
| 1816 } | 1818 } | 
| OLD | NEW |