summaryrefslogtreecommitdiffstats
path: root/ash/wm/workspace_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ash/wm/workspace_controller.cc')
-rw-r--r--ash/wm/workspace_controller.cc68
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