Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2160)

Unified Diff: ui/aura_shell/modal_container_layout_manager.cc

Issue 9026017: Move some more files into ash... this time seed the window manager dir. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/aura_shell/modal_container_layout_manager.cc
===================================================================
--- ui/aura_shell/modal_container_layout_manager.cc (revision 115643)
+++ ui/aura_shell/modal_container_layout_manager.cc (working copy)
@@ -1,190 +0,0 @@
-// Copyright (c) 2011 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 "ui/aura_shell/modal_container_layout_manager.h"
-
-#include "base/bind.h"
-#include "ui/aura/client/aura_constants.h"
-#include "ui/aura/event.h"
-#include "ui/aura/root_window.h"
-#include "ui/aura/window.h"
-#include "ui/aura_shell/modality_event_filter.h"
-#include "ui/aura_shell/shell.h"
-#include "ui/aura_shell/window_util.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/compositor/layer.h"
-#include "ui/gfx/compositor/layer_animator.h"
-#include "ui/views/view.h"
-#include "ui/views/widget/widget.h"
-
-namespace aura_shell {
-namespace internal {
-
-namespace {
-
-class ScreenView : public views::View {
- public:
- ScreenView() {}
- virtual ~ScreenView() {}
-
- // Overridden from views::View:
- virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
- canvas->FillRect(SK_ColorBLACK, GetLocalBounds());
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ScreenView);
-};
-
-} // namespace
-
-////////////////////////////////////////////////////////////////////////////////
-// ModalContainerLayoutManager, public:
-
-ModalContainerLayoutManager::ModalContainerLayoutManager(
- aura::Window* container)
- : container_(container),
- modal_screen_(NULL),
- ALLOW_THIS_IN_INITIALIZER_LIST(
- modality_filter_(new ModalityEventFilter(container, this))) {
-}
-
-ModalContainerLayoutManager::~ModalContainerLayoutManager() {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// ModalContainerLayoutManager, aura::LayoutManager implementation:
-
-void ModalContainerLayoutManager::OnWindowResized() {
- if (modal_screen_) {
- modal_screen_->SetBounds(gfx::Rect(0, 0, container_->bounds().width(),
- container_->bounds().height()));
- }
-}
-
-void ModalContainerLayoutManager::OnWindowAddedToLayout(
- aura::Window* child) {
- child->AddObserver(this);
- if (child->GetIntProperty(aura::client::kModalKey))
- AddModalWindow(child);
-}
-
-void ModalContainerLayoutManager::OnWillRemoveWindowFromLayout(
- aura::Window* child) {
- child->RemoveObserver(this);
- if (child->GetIntProperty(aura::client::kModalKey))
- RemoveModalWindow(child);
-}
-
-void ModalContainerLayoutManager::OnChildWindowVisibilityChanged(
- aura::Window* child,
- bool visible) {
-}
-
-void ModalContainerLayoutManager::SetChildBounds(
- aura::Window* child,
- const gfx::Rect& requested_bounds) {
- SetChildBoundsDirect(child, requested_bounds);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// ModalContainerLayoutManager, aura::WindowObserver implementation:
-
-void ModalContainerLayoutManager::OnWindowPropertyChanged(aura::Window* window,
- const char* key,
- void* old) {
- if (key != aura::client::kModalKey)
- return;
-
- if (window->GetIntProperty(aura::client::kModalKey)) {
- AddModalWindow(window);
- } else if (static_cast<int>(reinterpret_cast<intptr_t>(old))) {
- RemoveModalWindow(window);
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// ModalContainerLayoutManager, ui::LayerAnimationObserver implementation:
-
-void ModalContainerLayoutManager::OnLayerAnimationEnded(
- const ui::LayerAnimationSequence* sequence) {
- if (modal_screen_ && !modal_screen_->GetNativeView()->layer()->ShouldDraw())
- DestroyModalScreen();
-}
-
-void ModalContainerLayoutManager::OnLayerAnimationAborted(
- const ui::LayerAnimationSequence* sequence) {
-}
-
-void ModalContainerLayoutManager::OnLayerAnimationScheduled(
- const ui::LayerAnimationSequence* sequence) {
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// ModalContainerLayoutManager, ModalityEventFilter::Delegate implementation:
-
-bool ModalContainerLayoutManager::CanWindowReceiveEvents(
- aura::Window* window) {
- return GetActivatableWindow(window) == modal_window();
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// ModalContainerLayoutManager, private:
-
-void ModalContainerLayoutManager::AddModalWindow(aura::Window* window) {
- modal_windows_.push_back(window);
- CreateModalScreen();
-}
-
-void ModalContainerLayoutManager::RemoveModalWindow(aura::Window* window) {
- aura::Window::Windows::iterator it =
- std::find(modal_windows_.begin(), modal_windows_.end(), window);
- if (it != modal_windows_.end())
- modal_windows_.erase(it);
-
- if (modal_windows_.empty())
- HideModalScreen();
- else
- aura_shell::ActivateWindow(modal_window());
-}
-
-void ModalContainerLayoutManager::CreateModalScreen() {
- if (modal_screen_)
- return;
- modal_screen_ = new views::Widget;
- views::Widget::InitParams params(views::Widget::InitParams::TYPE_CONTROL);
- params.parent = container_;
- params.bounds = gfx::Rect(0, 0, container_->bounds().width(),
- container_->bounds().height());
- modal_screen_->Init(params);
- modal_screen_->GetNativeView()->SetName(
- "ModalContainerLayoutManager.ModalScreen");
- modal_screen_->SetContentsView(new ScreenView);
- modal_screen_->GetNativeView()->layer()->SetOpacity(0.0f);
- modal_screen_->GetNativeView()->layer()->GetAnimator()->AddObserver(this);
-
- Shell::GetInstance()->AddRootWindowEventFilter(modality_filter_.get());
-
- ui::LayerAnimator::ScopedSettings settings(
- modal_screen_->GetNativeView()->layer()->GetAnimator());
- modal_screen_->Show();
- modal_screen_->GetNativeView()->layer()->SetOpacity(0.5f);
- container_->StackChildAtTop(modal_screen_->GetNativeView());
-}
-
-void ModalContainerLayoutManager::DestroyModalScreen() {
- modal_screen_->GetNativeView()->layer()->GetAnimator()->RemoveObserver(this);
- modal_screen_->Close();
- modal_screen_ = NULL;
-}
-
-void ModalContainerLayoutManager::HideModalScreen() {
- Shell::GetInstance()->RemoveRootWindowEventFilter(modality_filter_.get());
- ui::LayerAnimator::ScopedSettings settings(
- modal_screen_->GetNativeView()->layer()->GetAnimator());
- modal_screen_->GetNativeView()->layer()->SetOpacity(0.0f);
-}
-
-} // namespace internal
-} // namespace aura_shell
« no previous file with comments | « ui/aura_shell/modal_container_layout_manager.h ('k') | ui/aura_shell/modal_container_layout_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698