diff options
Diffstat (limited to 'ash/wm/workspace_controller.cc')
-rw-r--r-- | ash/wm/workspace_controller.cc | 68 |
1 files changed, 12 insertions, 56 deletions
diff --git a/ash/wm/workspace_controller.cc b/ash/wm/workspace_controller.cc index b40123a..3e78097 100644 --- a/ash/wm/workspace_controller.cc +++ b/ash/wm/workspace_controller.cc @@ -29,70 +29,30 @@ namespace { // animation (when logging in). const int kInitialPauseTimeMS = 750; -// LayoutManager installed on the parent window of the desktop window (eg -// DefaultContainer). -class LayoutManagerImpl : public BaseLayoutManager { - public: - explicit LayoutManagerImpl(aura::Window* viewport) - : BaseLayoutManager(viewport->GetRootWindow()), - viewport_(viewport) { - } - virtual ~LayoutManagerImpl() {} - - // Overridden from BaseWorkspaceLayoutManager: - virtual void OnWindowResized() OVERRIDE { - for (size_t i = 0; i < viewport_->children().size(); ++i) { - viewport_->children()[i]->SetBounds( - gfx::Rect(viewport_->bounds().size())); - } - } - - virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE { - // Only workspaces should be added as children. - DCHECK(child->id() == kShellWindowId_WorkspaceContainer); - child->SetBounds(gfx::Rect(viewport_->bounds().size())); - } - - private: - aura::Window* viewport_; - - DISALLOW_COPY_AND_ASSIGN(LayoutManagerImpl); -}; - } // namespace WorkspaceController::WorkspaceController(aura::Window* viewport) : viewport_(viewport), shelf_(NULL), - desktop_(new aura::Window(NULL)), - event_handler_(new WorkspaceEventHandler(desktop_.get())) { - viewport_->SetEventFilter(NULL); - viewport_->SetLayoutManager(new LayoutManagerImpl(viewport_)); - - views::corewm::SetChildWindowVisibilityChangesAnimated(desktop_.get()); + event_handler_(new WorkspaceEventHandler(viewport_)) { SetWindowVisibilityAnimationTransition( - desktop_.get(), views::corewm::ANIMATE_NONE); - desktop_->set_id(kShellWindowId_WorkspaceContainer); - desktop_->SetName("DesktopWorkspaceContainer"); - desktop_->Init(ui::LAYER_NOT_DRAWN); + viewport_, views::corewm::ANIMATE_NONE); // Do this so when animating out windows don't extend beyond the bounds. - desktop_->layer()->SetMasksToBounds(true); - viewport_->AddChild(desktop_.get()); - desktop_->SetProperty(internal::kUsesScreenCoordinatesKey, true); + viewport_->layer()->SetMasksToBounds(true); // The layout-manager cannot be created in the initializer list since it // depends on the window to have been initialized. - layout_manager_ = new WorkspaceLayoutManager(desktop_.get()); - desktop_->SetLayoutManager(layout_manager_); + layout_manager_ = new WorkspaceLayoutManager(viewport_); + viewport_->SetLayoutManager(layout_manager_); - desktop_->Show(); + viewport_->Show(); } WorkspaceController::~WorkspaceController() { - desktop_->SetLayoutManager(NULL); - desktop_->SetEventFilter(NULL); - desktop_->RemovePreTargetHandler(event_handler_.get()); - desktop_->RemovePostTargetHandler(event_handler_.get()); + viewport_->SetLayoutManager(NULL); + viewport_->SetEventFilter(NULL); + viewport_->RemovePreTargetHandler(event_handler_.get()); + viewport_->RemovePostTargetHandler(event_handler_.get()); } WorkspaceWindowState WorkspaceController::GetWindowState() const { @@ -100,7 +60,7 @@ WorkspaceWindowState WorkspaceController::GetWindowState() const { return WORKSPACE_WINDOW_STATE_DEFAULT; const gfx::Rect shelf_bounds(shelf_->GetIdealBounds()); - const aura::Window::Windows& windows(desktop_->children()); + const aura::Window::Windows& windows(viewport_->children()); bool window_overlaps_launcher = false; bool has_maximized_window = false; for (aura::Window::Windows::const_iterator i = windows.begin(); @@ -133,15 +93,11 @@ void WorkspaceController::SetShelf(ShelfLayoutManager* shelf) { layout_manager_->SetShelf(shelf); } -aura::Window* WorkspaceController::GetActiveWorkspaceWindow() { - return desktop_.get(); -} - void WorkspaceController::DoInitialAnimation() { WorkspaceAnimationDetails details; details.animate = details.animate_opacity = details.animate_scale = true; details.pause_time_ms = kInitialPauseTimeMS; - ash::internal::ShowWorkspace(desktop_.get(), details); + ash::internal::ShowWorkspace(viewport_, details); } } // namespace internal |