| 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/workspace2.h" | 5 #include "ash/wm/workspace/workspace.h" | 
| 6 | 6 | 
| 7 #include "ash/shell_window_ids.h" | 7 #include "ash/shell_window_ids.h" | 
| 8 #include "ash/wm/property_util.h" | 8 #include "ash/wm/property_util.h" | 
| 9 #include "ash/wm/window_animations.h" | 9 #include "ash/wm/window_animations.h" | 
| 10 #include "ash/wm/window_properties.h" | 10 #include "ash/wm/window_properties.h" | 
| 11 #include "ash/wm/window_util.h" | 11 #include "ash/wm/window_util.h" | 
| 12 #include "ash/wm/workspace/workspace_event_handler.h" | 12 #include "ash/wm/workspace/workspace_event_handler.h" | 
| 13 #include "ash/wm/workspace/workspace_layout_manager2.h" | 13 #include "ash/wm/workspace/workspace_layout_manager.h" | 
| 14 #include "ash/wm/workspace/workspace_manager2.h" | 14 #include "ash/wm/workspace/workspace_manager.h" | 
| 15 #include "ui/aura/window.h" | 15 #include "ui/aura/window.h" | 
| 16 | 16 | 
| 17 namespace ash { | 17 namespace ash { | 
| 18 namespace internal { | 18 namespace internal { | 
| 19 | 19 | 
| 20 Workspace2::Workspace2(WorkspaceManager2* manager, | 20 Workspace::Workspace(WorkspaceManager* manager, | 
| 21                        aura::Window* parent, | 21                      aura::Window* parent, | 
| 22                        bool is_maximized) | 22                      bool is_maximized) | 
| 23     : is_maximized_(is_maximized), | 23     : is_maximized_(is_maximized), | 
| 24       workspace_manager_(manager), | 24       workspace_manager_(manager), | 
| 25       window_(new aura::Window(NULL)), | 25       window_(new aura::Window(NULL)), | 
| 26       event_handler_(new WorkspaceEventHandler(window_)), | 26       event_handler_(new WorkspaceEventHandler(window_)), | 
| 27       workspace_layout_manager_(NULL) { | 27       workspace_layout_manager_(NULL) { | 
| 28   window_->SetProperty(internal::kChildWindowVisibilityChangesAnimatedKey, | 28   window_->SetProperty(internal::kChildWindowVisibilityChangesAnimatedKey, | 
| 29                        true); | 29                        true); | 
| 30   SetWindowVisibilityAnimationTransition(window_, ANIMATE_NONE); | 30   SetWindowVisibilityAnimationTransition(window_, ANIMATE_NONE); | 
| 31   window_->set_id(kShellWindowId_WorkspaceContainer); | 31   window_->set_id(kShellWindowId_WorkspaceContainer); | 
| 32   window_->SetName("WorkspaceContainer"); | 32   window_->SetName("WorkspaceContainer"); | 
| 33   window_->Init(ui::LAYER_NOT_DRAWN); | 33   window_->Init(ui::LAYER_NOT_DRAWN); | 
| 34   // Do this so when animating out windows don't extend beyond the bounds. | 34   // Do this so when animating out windows don't extend beyond the bounds. | 
| 35   window_->layer()->SetMasksToBounds(true); | 35   window_->layer()->SetMasksToBounds(true); | 
| 36   window_->Hide(); | 36   window_->Hide(); | 
| 37   window_->SetParent(parent); | 37   window_->SetParent(parent); | 
| 38   window_->SetProperty(internal::kUsesScreenCoordinatesKey, true); | 38   window_->SetProperty(internal::kUsesScreenCoordinatesKey, true); | 
| 39 | 39 | 
| 40   // The layout-manager cannot be created in the initializer list since it | 40   // The layout-manager cannot be created in the initializer list since it | 
| 41   // depends on the window to have been initialized. | 41   // depends on the window to have been initialized. | 
| 42   workspace_layout_manager_ = new WorkspaceLayoutManager2(this); | 42   workspace_layout_manager_ = new WorkspaceLayoutManager(this); | 
| 43   window_->SetLayoutManager(workspace_layout_manager_); | 43   window_->SetLayoutManager(workspace_layout_manager_); | 
| 44 } | 44 } | 
| 45 | 45 | 
| 46 Workspace2::~Workspace2() { | 46 Workspace::~Workspace() { | 
| 47   // ReleaseWindow() should have been invoked before we're deleted. | 47   // ReleaseWindow() should have been invoked before we're deleted. | 
| 48   DCHECK(!window_); | 48   DCHECK(!window_); | 
| 49 } | 49 } | 
| 50 | 50 | 
| 51 aura::Window* Workspace2::ReleaseWindow() { | 51 aura::Window* Workspace::ReleaseWindow() { | 
| 52   // Remove the LayoutManager and EventFilter as they refer back to us and/or | 52   // Remove the LayoutManager and EventFilter as they refer back to us and/or | 
| 53   // WorkspaceManager. | 53   // WorkspaceManager. | 
| 54   window_->SetLayoutManager(NULL); | 54   window_->SetLayoutManager(NULL); | 
| 55   window_->SetEventFilter(NULL); | 55   window_->SetEventFilter(NULL); | 
| 56   aura::Window* window = window_; | 56   aura::Window* window = window_; | 
| 57   window_ = NULL; | 57   window_ = NULL; | 
| 58   return window; | 58   return window; | 
| 59 } | 59 } | 
| 60 | 60 | 
| 61 bool Workspace2::ShouldMoveToPending() const { | 61 bool Workspace::ShouldMoveToPending() const { | 
| 62   if (!is_maximized_) | 62   if (!is_maximized_) | 
| 63     return false; | 63     return false; | 
| 64 | 64 | 
| 65   bool has_visible_non_maximized_window = false; | 65   bool has_visible_non_maximized_window = false; | 
| 66   for (size_t i = 0; i < window_->children().size(); ++i) { | 66   for (size_t i = 0; i < window_->children().size(); ++i) { | 
| 67     aura::Window* child(window_->children()[i]); | 67     aura::Window* child(window_->children()[i]); | 
| 68     if (!GetTrackedByWorkspace(child) || !child->TargetVisibility() || | 68     if (!GetTrackedByWorkspace(child) || !child->TargetVisibility() || | 
| 69         wm::IsWindowMinimized(child)) | 69         wm::IsWindowMinimized(child)) | 
| 70       continue; | 70       continue; | 
| 71     if (WorkspaceManager2::IsMaximized(child)) | 71     if (WorkspaceManager::IsMaximized(child)) | 
| 72       return false; | 72       return false; | 
| 73 | 73 | 
| 74     if (GetTrackedByWorkspace(child) && !GetPersistsAcrossAllWorkspaces(child)) | 74     if (GetTrackedByWorkspace(child) && !GetPersistsAcrossAllWorkspaces(child)) | 
| 75       has_visible_non_maximized_window = true; | 75       has_visible_non_maximized_window = true; | 
| 76   } | 76   } | 
| 77   return !has_visible_non_maximized_window; | 77   return !has_visible_non_maximized_window; | 
| 78 } | 78 } | 
| 79 | 79 | 
| 80 int Workspace2::GetNumMaximizedWindows() const { | 80 int Workspace::GetNumMaximizedWindows() const { | 
| 81   int count = 0; | 81   int count = 0; | 
| 82   for (size_t i = 0; i < window_->children().size(); ++i) { | 82   for (size_t i = 0; i < window_->children().size(); ++i) { | 
| 83     aura::Window* child = window_->children()[i]; | 83     aura::Window* child = window_->children()[i]; | 
| 84     if (GetTrackedByWorkspace(child) && | 84     if (GetTrackedByWorkspace(child) && | 
| 85         (WorkspaceManager2::IsMaximized(child) || | 85         (WorkspaceManager::IsMaximized(child) || | 
| 86          WorkspaceManager2::WillRestoreMaximized(child))) { | 86          WorkspaceManager::WillRestoreMaximized(child))) { | 
| 87       if (++count == 2) | 87       if (++count == 2) | 
| 88         return count; | 88         return count; | 
| 89     } | 89     } | 
| 90   } | 90   } | 
| 91   return count; | 91   return count; | 
| 92 } | 92 } | 
| 93 | 93 | 
| 94 }  // namespace internal | 94 }  // namespace internal | 
| 95 }  // namespace ash | 95 }  // namespace ash | 
| OLD | NEW | 
|---|