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

Unified Diff: ash/desktop_background/desktop_background_controller.cc

Issue 10810039: 2nd display should show the same background as login/lock screen: (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 5 months 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: 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

Powered by Google App Engine
This is Rietveld 408576698