Chromium Code Reviews| 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 |