| Index: ash/wm/workspace/system_background_controller.cc
|
| diff --git a/ash/wm/workspace/system_background_controller.cc b/ash/wm/workspace/system_background_controller.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..71e38658972b77cfc5f4ef690704d5a007b07cd0
|
| --- /dev/null
|
| +++ b/ash/wm/workspace/system_background_controller.cc
|
| @@ -0,0 +1,79 @@
|
| +// 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/workspace/system_background_controller.h"
|
| +
|
| +#include "ash/shell_window_ids.h"
|
| +#include "ui/aura/root_window.h"
|
| +#include "ui/gfx/canvas.h"
|
| +#include "ui/views/widget/widget.h"
|
| +#include "ui/views/widget/widget_delegate.h"
|
| +
|
| +namespace ash {
|
| +namespace internal {
|
| +
|
| +// View implementation responsible for rendering the background.
|
| +class SystemBackgroundController::View : public views::WidgetDelegateView {
|
| + public:
|
| + explicit View(SystemBackgroundController* controller);
|
| + virtual ~View();
|
| +
|
| + // Closes the hosting widget.
|
| + void Close();
|
| +
|
| + // WidgetDelegate overrides:
|
| + virtual views::View* GetContentsView() OVERRIDE;
|
| +
|
| + // View overrides:
|
| + virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
|
| +
|
| + private:
|
| + SystemBackgroundController* controller_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(View);
|
| +};
|
| +
|
| +SystemBackgroundController::View::View(SystemBackgroundController* controller)
|
| + : controller_(controller) {
|
| +}
|
| +
|
| +SystemBackgroundController::View::~View() {
|
| + if (controller_)
|
| + controller_->view_ = NULL;
|
| +}
|
| +
|
| +void SystemBackgroundController::View::Close() {
|
| + controller_ = NULL;
|
| + GetWidget()->Close();
|
| +}
|
| +
|
| +views::View* SystemBackgroundController::View::GetContentsView() {
|
| + return this;
|
| +}
|
| +
|
| +void SystemBackgroundController::View::OnPaint(gfx::Canvas* canvas) {
|
| + // TODO: get image!
|
| + canvas->DrawColor(SK_ColorRED);
|
| +}
|
| +
|
| +SystemBackgroundController::SystemBackgroundController(aura::RootWindow* root)
|
| + : ALLOW_THIS_IN_INITIALIZER_LIST(view_(new View(this))) {
|
| + views::Widget* widget = new views::Widget;
|
| + views::Widget::InitParams params(
|
| + views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
|
| + params.delegate = view_;
|
| + params.parent = root->GetChildById(kShellWindowId_SystemBackgroundContainer);
|
| + widget->Init(params);
|
| + widget->SetBounds(params.parent->bounds());
|
| + widget->Show();
|
| + widget->GetNativeView()->SetName("SystemBackground");
|
| +}
|
| +
|
| +SystemBackgroundController::~SystemBackgroundController() {
|
| + if (view_)
|
| + view_->Close();
|
| +}
|
| +
|
| +} // namespace internal
|
| +} // namespace ash
|
|
|