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 "ash/wm/workspace/multi_window_resize_controller.h" | 5 #include "ash/wm/workspace/multi_window_resize_controller.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/shell_window_ids.h" | 8 #include "ash/shell_window_ids.h" |
9 #include "ash/wm/root_window_event_filter.h" | 9 #include "ash/wm/root_window_event_filter.h" |
10 #include "ash/wm/window_animations.h" | 10 #include "ash/wm/window_animations.h" |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 } | 79 } |
80 virtual bool OnMousePressed(const views::MouseEvent& event) OVERRIDE { | 80 virtual bool OnMousePressed(const views::MouseEvent& event) OVERRIDE { |
81 gfx::Point location(event.location()); | 81 gfx::Point location(event.location()); |
82 views::View::ConvertPointToScreen(this, &location); | 82 views::View::ConvertPointToScreen(this, &location); |
83 controller_->StartResize(location); | 83 controller_->StartResize(location); |
84 return true; | 84 return true; |
85 } | 85 } |
86 virtual bool OnMouseDragged(const views::MouseEvent& event) OVERRIDE { | 86 virtual bool OnMouseDragged(const views::MouseEvent& event) OVERRIDE { |
87 gfx::Point location(event.location()); | 87 gfx::Point location(event.location()); |
88 views::View::ConvertPointToScreen(this, &location); | 88 views::View::ConvertPointToScreen(this, &location); |
89 controller_->Resize(location); | 89 controller_->Resize(location, event.flags()); |
90 return true; | 90 return true; |
91 } | 91 } |
92 virtual void OnMouseReleased(const views::MouseEvent& event) OVERRIDE { | 92 virtual void OnMouseReleased(const views::MouseEvent& event) OVERRIDE { |
93 controller_->CompleteResize(); | 93 controller_->CompleteResize(event.flags()); |
94 } | 94 } |
95 virtual void OnMouseCaptureLost() OVERRIDE { | 95 virtual void OnMouseCaptureLost() OVERRIDE { |
96 controller_->CancelResize(); | 96 controller_->CancelResize(); |
97 } | 97 } |
98 virtual gfx::NativeCursor GetCursor( | 98 virtual gfx::NativeCursor GetCursor( |
99 const views::MouseEvent& event) OVERRIDE { | 99 const views::MouseEvent& event) OVERRIDE { |
100 int component = (direction_ == LEFT_RIGHT) ? HTRIGHT : HTBOTTOM; | 100 int component = (direction_ == LEFT_RIGHT) ? HTRIGHT : HTBOTTOM; |
101 return RootWindowEventFilter::CursorForWindowComponent(component); | 101 return RootWindowEventFilter::CursorForWindowComponent(component); |
102 } | 102 } |
103 | 103 |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 std::vector<aura::Window*> windows; | 393 std::vector<aura::Window*> windows; |
394 windows.push_back(windows_.window2); | 394 windows.push_back(windows_.window2); |
395 FindWindowsTouching(windows_.window2, windows_.direction, | 395 FindWindowsTouching(windows_.window2, windows_.direction, |
396 &windows_.other_windows); | 396 &windows_.other_windows); |
397 for (size_t i = 0; i < windows_.other_windows.size(); ++i) { | 397 for (size_t i = 0; i < windows_.other_windows.size(); ++i) { |
398 windows_.other_windows[i]->AddObserver(this); | 398 windows_.other_windows[i]->AddObserver(this); |
399 windows.push_back(windows_.other_windows[i]); | 399 windows.push_back(windows_.other_windows[i]); |
400 } | 400 } |
401 int component = windows_.direction == LEFT_RIGHT ? HTRIGHT : HTBOTTOM; | 401 int component = windows_.direction == LEFT_RIGHT ? HTRIGHT : HTBOTTOM; |
402 window_resizer_.reset(WorkspaceWindowResizer::Create( | 402 window_resizer_.reset(WorkspaceWindowResizer::Create( |
403 windows_.window1, parent_location, component, grid_size_, windows)); | 403 windows_.window1, parent_location, component, windows)); |
404 } | 404 } |
405 | 405 |
406 void MultiWindowResizeController::Resize(const gfx::Point& screen_location) { | 406 void MultiWindowResizeController::Resize(const gfx::Point& screen_location, |
| 407 int event_flags) { |
407 gfx::Point parent_location(screen_location); | 408 gfx::Point parent_location(screen_location); |
408 aura::Window::ConvertPointToWindow(windows_.window1->GetRootWindow(), | 409 aura::Window::ConvertPointToWindow(windows_.window1->GetRootWindow(), |
409 windows_.window1->parent(), | 410 windows_.window1->parent(), |
410 &parent_location); | 411 &parent_location); |
411 window_resizer_->Drag(parent_location); | 412 window_resizer_->Drag(parent_location, event_flags); |
412 gfx::Rect bounds = CalculateResizeWidgetBounds(parent_location); | 413 gfx::Rect bounds = CalculateResizeWidgetBounds(parent_location); |
413 if (windows_.direction == LEFT_RIGHT) | 414 if (windows_.direction == LEFT_RIGHT) |
414 bounds.set_y(show_bounds_.y()); | 415 bounds.set_y(show_bounds_.y()); |
415 else | 416 else |
416 bounds.set_x(show_bounds_.x()); | 417 bounds.set_x(show_bounds_.x()); |
417 resize_widget_->SetBounds(bounds); | 418 resize_widget_->SetBounds(bounds); |
418 } | 419 } |
419 | 420 |
420 void MultiWindowResizeController::CompleteResize() { | 421 void MultiWindowResizeController::CompleteResize(int event_flags) { |
421 window_resizer_->CompleteDrag(); | 422 window_resizer_->CompleteDrag(event_flags); |
422 window_resizer_.reset(); | 423 window_resizer_.reset(); |
423 | 424 |
424 // Mouse may still be over resizer, if not hide. | 425 // Mouse may still be over resizer, if not hide. |
425 gfx::Point screen_loc = gfx::Screen::GetCursorScreenPoint(); | 426 gfx::Point screen_loc = gfx::Screen::GetCursorScreenPoint(); |
426 if (!resize_widget_->GetWindowScreenBounds().Contains(screen_loc)) | 427 if (!resize_widget_->GetWindowScreenBounds().Contains(screen_loc)) |
427 Hide(); | 428 Hide(); |
428 } | 429 } |
429 | 430 |
430 void MultiWindowResizeController::CancelResize() { | 431 void MultiWindowResizeController::CancelResize() { |
431 if (!window_resizer_.get()) | 432 if (!window_resizer_.get()) |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 | 488 |
488 gfx::Point window_loc(screen_location); | 489 gfx::Point window_loc(screen_location); |
489 aura::Window::ConvertPointToWindow( | 490 aura::Window::ConvertPointToWindow( |
490 window->GetRootWindow(), window, &window_loc); | 491 window->GetRootWindow(), window, &window_loc); |
491 return window->HitTest(window_loc) && | 492 return window->HitTest(window_loc) && |
492 window->delegate()->GetNonClientComponent(window_loc) == component; | 493 window->delegate()->GetNonClientComponent(window_loc) == component; |
493 } | 494 } |
494 | 495 |
495 } // namespace internal | 496 } // namespace internal |
496 } // namespace ash | 497 } // namespace ash |
OLD | NEW |