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 |