Index: ash/desktop_background/desktop_background_controller.cc |
diff --git a/ash/desktop_background/desktop_background_controller.cc b/ash/desktop_background/desktop_background_controller.cc |
index 022ca0ba0c796d47753b6536e39bc8dac85d94e0..7be4b38d27d2eb33367a38b84f4e03b6ab0576d6 100644 |
--- a/ash/desktop_background/desktop_background_controller.cc |
+++ b/ash/desktop_background/desktop_background_controller.cc |
@@ -125,7 +125,8 @@ void DesktopBackgroundController::OnRootWindowAdded( |
if (current_wallpaper_.get()) { |
SetDesktopBackgroundImage(root_window); |
} else { |
- internal::CreateDesktopBackground(root_window); |
+ internal::CreateDesktopBackground(root_window, |
+ ash::internal::kShellWindowId_DesktopBackgroundContainer); |
} |
break; |
case BACKGROUND_SOLID_COLOR: |
@@ -190,25 +191,39 @@ void DesktopBackgroundController::SetDesktopBackgroundSolidColorMode( |
Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
for (Shell::RootWindowList::iterator iter = root_windows.begin(); |
iter != root_windows.end(); ++iter) { |
+ aura::RootWindow* root_window = *iter; |
+ |
+ SetColorLayerForContainer(color, root_window, |
+ internal::kShellWindowId_DesktopBackgroundContainer); |
+ } |
+} |
+ |
+void DesktopBackgroundController::SetColorLayerForContainer( |
+ SkColor color, |
+ aura::RootWindow* root_window, |
+ int container_id) { |
+ |
sky
2012/07/20 23:57:04
nit: remove newline.
Denis Kuznetsov (DE-MUC)
2012/07/23 14:01:08
Done.
|
ui::Layer* background_layer = new ui::Layer(ui::LAYER_SOLID_COLOR); |
background_layer->SetColor(color); |
- aura::RootWindow* root_window = *iter; |
- Shell::GetContainer( |
- root_window, |
- internal::kShellWindowId_DesktopBackgroundContainer)-> |
+ |
+ Shell::GetContainer(root_window,container_id)-> |
layer()->Add(background_layer); |
GetRootWindowLayoutManager(root_window)->SetBackgroundLayer( |
- background_layer); |
- GetRootWindowLayoutManager(root_window)->SetBackgroundWidget(NULL); |
- } |
+ background_layer, |
+ container_id); |
+ GetRootWindowLayoutManager(root_window)->SetBackgroundWidget( |
+ NULL, |
+ container_id); |
} |
void DesktopBackgroundController::SetDesktopBackgroundImage( |
aura::RootWindow* root_window) { |
- GetRootWindowLayoutManager(root_window)->SetBackgroundLayer(NULL); |
+ GetRootWindowLayoutManager(root_window)->SetBackgroundLayer(NULL, |
+ internal::kShellWindowId_DesktopBackgroundContainer); |
if (current_wallpaper_.get() && |
!current_wallpaper_->wallpaper_image.empty()) |
- internal::CreateDesktopBackground(root_window); |
+ internal::CreateDesktopBackground(root_window, |
+ ash::internal::kShellWindowId_DesktopBackgroundContainer); |
} |
void DesktopBackgroundController::UpdateDesktopBackgroundImageMode() { |
@@ -237,8 +252,38 @@ void DesktopBackgroundController::CreateEmptyWallpaper() { |
Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
for (Shell::RootWindowList::iterator iter = root_windows.begin(); |
iter != root_windows.end(); ++iter) { |
- internal::CreateDesktopBackground(*iter); |
+ internal::CreateDesktopBackground(*iter, |
+ ash::internal::kShellWindowId_DesktopBackgroundContainer); |
+ } |
+} |
+ |
+void DesktopBackgroundController::CreateLockScreenDesktops() { |
bshe
2012/07/23 00:19:36
I am guessing you plan use the new container to re
Denis Kuznetsov (DE-MUC)
2012/07/23 14:01:09
Yes, this is the plan. However, there is an issue
bshe
2012/07/23 14:36:28
Got it. I will drop the priority of post processed
|
+ Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
+ for (Shell::RootWindowList::iterator iter = root_windows.begin(); |
+ iter != root_windows.end(); ++iter) { |
+ if (BACKGROUND_IMAGE == desktop_background_mode_) { |
sky
2012/07/20 23:57:04
spacing is off in the rest of this function.
Denis Kuznetsov (DE-MUC)
2012/07/23 14:01:09
Done.
|
+ internal::CreateDesktopBackground(*iter, |
+ ash::internal::kShellWindowId_LockScreenBackgroundContainer); |
+ } else if (BACKGROUND_SOLID_COLOR == desktop_background_mode_) { |
+ SetColorLayerForContainer(background_color_, *iter, |
+ ash::internal::kShellWindowId_LockScreenBackgroundContainer); |
+ } else { |
+ // If something went wrong, still use some default color to |
+ // hide user's windows. |
+ SetColorLayerForContainer(SK_ColorGRAY, *iter, |
+ ash::internal::kShellWindowId_LockScreenBackgroundContainer); |
+ } |
} |
} |
+void DesktopBackgroundController::RemoveLockScreenDesktops() { |
+Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
sky
2012/07/20 23:57:04
spacing is off.
Denis Kuznetsov (DE-MUC)
2012/07/23 14:01:09
Done.
|
+ for (Shell::RootWindowList::iterator iter = root_windows.begin(); |
+ iter != root_windows.end(); ++iter) { |
+ GetRootWindowLayoutManager(*iter)->DropBackgroundForContainer( |
+ ash::internal::kShellWindowId_LockScreenBackgroundContainer); |
+ } |
+} |
+ |
+ |
} // namespace ash |