diff options
Diffstat (limited to 'chromium/ash/wm/root_window_layout_manager.cc')
-rw-r--r-- | chromium/ash/wm/root_window_layout_manager.cc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/chromium/ash/wm/root_window_layout_manager.cc b/chromium/ash/wm/root_window_layout_manager.cc new file mode 100644 index 00000000000..ef1689e38f6 --- /dev/null +++ b/chromium/ash/wm/root_window_layout_manager.cc @@ -0,0 +1,78 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/wm/root_window_layout_manager.h" + +#include "ash/desktop_background/desktop_background_widget_controller.h" +#include "ash/root_window_controller.h" +#include "ui/aura/root_window.h" +#include "ui/compositor/layer.h" +#include "ui/views/widget/widget.h" + +namespace ash { +namespace internal { + +//////////////////////////////////////////////////////////////////////////////// +// RootWindowLayoutManager, public: + +RootWindowLayoutManager::RootWindowLayoutManager(aura::Window* owner) + : owner_(owner) { +} + +RootWindowLayoutManager::~RootWindowLayoutManager() { +} + + +//////////////////////////////////////////////////////////////////////////////// +// RootWindowLayoutManager, aura::LayoutManager implementation: + +void RootWindowLayoutManager::OnWindowResized() { + gfx::Rect fullscreen_bounds = + gfx::Rect(owner_->bounds().width(), owner_->bounds().height()); + + // Resize both our immediate children (the containers-of-containers animated + // by PowerButtonController) and their children (the actual containers). + aura::Window::Windows::const_iterator i; + for (i = owner_->children().begin(); i != owner_->children().end(); ++i) { + (*i)->SetBounds(fullscreen_bounds); + aura::Window::Windows::const_iterator j; + for (j = (*i)->children().begin(); j != (*i)->children().end(); ++j) + (*j)->SetBounds(fullscreen_bounds); + } + RootWindowController* root_window_controller = + GetRootWindowController(owner_); + DesktopBackgroundWidgetController* background = + root_window_controller->wallpaper_controller(); + + if (!background && root_window_controller->animating_wallpaper_controller()) { + background = root_window_controller->animating_wallpaper_controller()-> + GetController(false); + } + if (background) + background->SetBounds(fullscreen_bounds); +} + +void RootWindowLayoutManager::OnWindowAddedToLayout(aura::Window* child) { +} + +void RootWindowLayoutManager::OnWillRemoveWindowFromLayout( + aura::Window* child) { +} + +void RootWindowLayoutManager::OnWindowRemovedFromLayout(aura::Window* child) { +} + +void RootWindowLayoutManager::OnChildWindowVisibilityChanged( + aura::Window* child, + bool visible) { +} + +void RootWindowLayoutManager::SetChildBounds( + aura::Window* child, + const gfx::Rect& requested_bounds) { + SetChildBoundsDirect(child, requested_bounds); +} + +} // namespace internal +} // namespace ash |