Index: ash/desktop_background/desktop_background_component.cc |
diff --git a/ash/desktop_background/desktop_background_component.cc b/ash/desktop_background/desktop_background_component.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e5554f7801659bb90ba1d68041fdf8960700194e |
--- /dev/null |
+++ b/ash/desktop_background/desktop_background_component.cc |
@@ -0,0 +1,61 @@ |
+// 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/desktop_background/desktop_background_component.h" |
+ |
+#include "ui/aura/root_window.h" |
+#include "ui/views/widget/widget.h" |
+ |
+DECLARE_WINDOW_PROPERTY_TYPE(ash::internal::DesktopBackgroundComponent*); |
+ |
+namespace ash { |
+namespace internal { |
+ |
+DEFINE_OWNED_WINDOW_PROPERTY_KEY(DesktopBackgroundComponent, |
+ kWindowDesktopComponent, NULL); |
+ |
+DesktopBackgroundComponent::DesktopBackgroundComponent(views::Widget* widget) |
+ : widget_(widget) { |
+} |
+ |
+DesktopBackgroundComponent::DesktopBackgroundComponent(ui::Layer* layer) |
+ : widget_(NULL) { |
+ layer_.reset(layer); |
+} |
+ |
+ |
+DesktopBackgroundComponent::~DesktopBackgroundComponent() { |
+ if (widget_) { |
+ widget_->CloseNow(); |
+ widget_ = NULL; |
+ } |
+ if (layer_.get()) { |
Nikita (slow)
2012/07/25 20:45:24
nit: no need for {}
Denis Kuznetsov (DE-MUC)
2012/07/26 13:51:13
Done.
|
+ layer_.reset(NULL); |
+ } |
+} |
+ |
+void DesktopBackgroundComponent::SetBounds(gfx::Rect bounds) { |
+ if (widget_) |
+ widget_->SetBounds(bounds); |
+ if (layer_.get()) |
+ layer_->SetBounds(bounds); |
+} |
+ |
+ |
+void DesktopBackgroundComponent::Reparent(aura::RootWindow* root_window , |
sky
2012/07/25 20:47:36
remove white space
Denis Kuznetsov (DE-MUC)
2012/07/26 13:51:13
Done.
|
+ int src_container, |
+ int dest_container) { |
+ if (widget_) { |
+ views::Widget::ReparentNativeView(widget_->GetNativeView(), |
+ root_window->GetChildById(dest_container)); |
+ } |
+ if (layer_.get()) { |
+ ui::Layer* layer = layer_.get(); |
+ root_window->GetChildById(src_container)->layer()->Remove(layer); |
+ root_window->GetChildById(dest_container)->layer()->Add(layer); |
+ } |
+} |
+ |
+} // namespace internal |
+} // namespace ash |