Home | History | Annotate | Download | only in overview
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "ash/wm/overview/window_selector_window.h"
      6 
      7 #include "ui/aura/window.h"
      8 
      9 namespace ash {
     10 
     11 WindowSelectorWindow::WindowSelectorWindow(aura::Window* window)
     12     : transform_window_(window) {
     13 }
     14 
     15 WindowSelectorWindow::~WindowSelectorWindow() {
     16 }
     17 
     18 aura::Window* WindowSelectorWindow::GetRootWindow() {
     19   return transform_window_.window()->GetRootWindow();
     20 }
     21 
     22 bool WindowSelectorWindow::HasSelectableWindow(const aura::Window* window) {
     23   return transform_window_.window() == window;
     24 }
     25 
     26 aura::Window* WindowSelectorWindow::TargetedWindow(const aura::Window* target) {
     27   if (transform_window_.Contains(target))
     28     return transform_window_.window();
     29   return NULL;
     30 }
     31 
     32 void WindowSelectorWindow::RestoreWindowOnExit(aura::Window* window) {
     33   transform_window_.RestoreWindowOnExit();
     34 }
     35 
     36 aura::Window* WindowSelectorWindow::SelectionWindow() {
     37   return transform_window_.window();
     38 }
     39 
     40 void WindowSelectorWindow::RemoveWindow(const aura::Window* window) {
     41   DCHECK_EQ(transform_window_.window(), window);
     42   transform_window_.OnWindowDestroyed();
     43 }
     44 
     45 bool WindowSelectorWindow::empty() const {
     46   return transform_window_.window() == NULL;
     47 }
     48 
     49 void WindowSelectorWindow::PrepareForOverview() {
     50   transform_window_.PrepareForOverview();
     51 }
     52 
     53 void WindowSelectorWindow::SetItemBounds(aura::Window* root_window,
     54                                          const gfx::Rect& target_bounds,
     55                                          bool animate) {
     56   gfx::Rect src_rect = transform_window_.GetBoundsInScreen();
     57   set_bounds(ScopedTransformOverviewWindow::
     58       ShrinkRectToFitPreservingAspectRatio(src_rect, target_bounds));
     59   transform_window_.SetTransform(root_window,
     60       ScopedTransformOverviewWindow::GetTransformForRect(src_rect, bounds()),
     61       animate);
     62 }
     63 
     64 }  // namespace ash
     65