Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(203)

Side by Side Diff: ash/wm/workspace/multi_window_resize_controller.cc

Issue 2897993003: chromeos: converts WindowResizer to aura::Window (Closed)
Patch Set: remove include from exo Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ash/wm/wm_toplevel_window_event_handler.cc ('k') | ash/wm/workspace/workspace_window_resizer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/public/cpp/shell_window_ids.h" 7 #include "ash/public/cpp/shell_window_ids.h"
8 #include "ash/root_window_controller.h" 8 #include "ash/root_window_controller.h"
9 #include "ash/wm/window_state.h" 9 #include "ash/wm/window_state.h"
10 #include "ash/wm/workspace/workspace_window_resizer.h" 10 #include "ash/wm/workspace/workspace_window_resizer.h"
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 FindWindowsTouching(windows_.window2, windows_.direction, 471 FindWindowsTouching(windows_.window2, windows_.direction,
472 &windows_.other_windows); 472 &windows_.other_windows);
473 for (size_t i = 0; i < windows_.other_windows.size(); ++i) { 473 for (size_t i = 0; i < windows_.other_windows.size(); ++i) {
474 windows_.other_windows[i]->AddObserver(this); 474 windows_.other_windows[i]->AddObserver(this);
475 windows.push_back(windows_.other_windows[i]); 475 windows.push_back(windows_.other_windows[i]);
476 } 476 }
477 int component = windows_.direction == LEFT_RIGHT ? HTRIGHT : HTBOTTOM; 477 int component = windows_.direction == LEFT_RIGHT ? HTRIGHT : HTBOTTOM;
478 wm::WindowState* window_state = wm::GetWindowState(windows_.window1); 478 wm::WindowState* window_state = wm::GetWindowState(windows_.window1);
479 window_state->CreateDragDetails(location_in_parent, component, 479 window_state->CreateDragDetails(location_in_parent, component,
480 aura::client::WINDOW_MOVE_SOURCE_MOUSE); 480 aura::client::WINDOW_MOVE_SOURCE_MOUSE);
481 window_resizer_.reset(WorkspaceWindowResizer::Create( 481 window_resizer_.reset(WorkspaceWindowResizer::Create(window_state, windows));
482 window_state, WmWindow::FromAuraWindows(windows)));
483 482
484 // Do not hide the resize widget while a drag is active. 483 // Do not hide the resize widget while a drag is active.
485 mouse_watcher_.reset(); 484 mouse_watcher_.reset();
486 } 485 }
487 486
488 void MultiWindowResizeController::Resize(const gfx::Point& location_in_screen, 487 void MultiWindowResizeController::Resize(const gfx::Point& location_in_screen,
489 int event_flags) { 488 int event_flags) {
490 gfx::Point location_in_parent = 489 gfx::Point location_in_parent =
491 ConvertPointFromScreen(windows_.window1->parent(), location_in_screen); 490 ConvertPointFromScreen(windows_.window1->parent(), location_in_screen);
492 window_resizer_->Drag(location_in_parent, event_flags); 491 window_resizer_->Drag(location_in_parent, event_flags);
493 gfx::Rect bounds = 492 gfx::Rect bounds =
494 ConvertRectToScreen(windows_.window1->parent(), 493 ConvertRectToScreen(windows_.window1->parent(),
495 CalculateResizeWidgetBounds(location_in_parent)); 494 CalculateResizeWidgetBounds(location_in_parent));
496 495
497 if (windows_.direction == LEFT_RIGHT) 496 if (windows_.direction == LEFT_RIGHT)
498 bounds.set_y(show_bounds_in_screen_.y()); 497 bounds.set_y(show_bounds_in_screen_.y());
499 else 498 else
500 bounds.set_x(show_bounds_in_screen_.x()); 499 bounds.set_x(show_bounds_in_screen_.x());
501 resize_widget_->SetBounds(bounds); 500 resize_widget_->SetBounds(bounds);
502 } 501 }
503 502
504 void MultiWindowResizeController::CompleteResize() { 503 void MultiWindowResizeController::CompleteResize() {
505 window_resizer_->CompleteDrag(); 504 window_resizer_->CompleteDrag();
506 window_resizer_->GetTarget()->GetWindowState()->DeleteDragDetails(); 505 wm::GetWindowState(window_resizer_->GetTarget())->DeleteDragDetails();
507 window_resizer_.reset(); 506 window_resizer_.reset();
508 507
509 // Mouse may still be over resizer, if not hide. 508 // Mouse may still be over resizer, if not hide.
510 gfx::Point screen_loc = display::Screen::GetScreen()->GetCursorScreenPoint(); 509 gfx::Point screen_loc = display::Screen::GetScreen()->GetCursorScreenPoint();
511 if (!resize_widget_->GetWindowBoundsInScreen().Contains(screen_loc)) { 510 if (!resize_widget_->GetWindowBoundsInScreen().Contains(screen_loc)) {
512 Hide(); 511 Hide();
513 } else { 512 } else {
514 // If the mouse is over the resizer we need to remove observers on any of 513 // If the mouse is over the resizer we need to remove observers on any of
515 // the |other_windows|. If we start another resize we'll recalculate the 514 // the |other_windows|. If we start another resize we'll recalculate the
516 // |other_windows| and invoke AddObserver() as necessary. 515 // |other_windows| and invoke AddObserver() as necessary.
517 for (size_t i = 0; i < windows_.other_windows.size(); ++i) 516 for (size_t i = 0; i < windows_.other_windows.size(); ++i)
518 windows_.other_windows[i]->RemoveObserver(this); 517 windows_.other_windows[i]->RemoveObserver(this);
519 windows_.other_windows.clear(); 518 windows_.other_windows.clear();
520 519
521 CreateMouseWatcher(); 520 CreateMouseWatcher();
522 } 521 }
523 } 522 }
524 523
525 void MultiWindowResizeController::CancelResize() { 524 void MultiWindowResizeController::CancelResize() {
526 if (!window_resizer_) 525 if (!window_resizer_)
527 return; // Happens if window was destroyed and we nuked the WindowResizer. 526 return; // Happens if window was destroyed and we nuked the WindowResizer.
528 window_resizer_->RevertDrag(); 527 window_resizer_->RevertDrag();
529 window_resizer_->GetTarget()->GetWindowState()->DeleteDragDetails(); 528 wm::GetWindowState(window_resizer_->GetTarget())->DeleteDragDetails();
530 window_resizer_.reset(); 529 window_resizer_.reset();
531 Hide(); 530 Hide();
532 } 531 }
533 532
534 gfx::Rect MultiWindowResizeController::CalculateResizeWidgetBounds( 533 gfx::Rect MultiWindowResizeController::CalculateResizeWidgetBounds(
535 const gfx::Point& location_in_parent) const { 534 const gfx::Point& location_in_parent) const {
536 gfx::Size pref = resize_widget_->GetContentsView()->GetPreferredSize(); 535 gfx::Size pref = resize_widget_->GetContentsView()->GetPreferredSize();
537 int x = 0, y = 0; 536 int x = 0, y = 0;
538 if (windows_.direction == LEFT_RIGHT) { 537 if (windows_.direction == LEFT_RIGHT) {
539 x = windows_.window1->bounds().right() - pref.width() / 2; 538 x = windows_.window1->bounds().right() - pref.width() / 2;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 const gfx::Point& location_in_screen, 596 const gfx::Point& location_in_screen,
598 int component) const { 597 int component) const {
599 gfx::Point window_loc = ConvertPointFromScreen(window, location_in_screen); 598 gfx::Point window_loc = ConvertPointFromScreen(window, location_in_screen);
600 const int window_component = 599 const int window_component =
601 window->delegate() ? window->delegate()->GetNonClientComponent(window_loc) 600 window->delegate() ? window->delegate()->GetNonClientComponent(window_loc)
602 : HTNOWHERE; 601 : HTNOWHERE;
603 return window_component == component; 602 return window_component == component;
604 } 603 }
605 604
606 } // namespace ash 605 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/wm_toplevel_window_event_handler.cc ('k') | ash/wm/workspace/workspace_window_resizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698