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 917e0abe795fad5b810ff74aed4ad66844ab424d..3df47d5922b62deeda4148ac58d31e6b27d4a39b 100644 |
--- a/ash/desktop_background/desktop_background_controller.cc |
+++ b/ash/desktop_background/desktop_background_controller.cc |
@@ -239,10 +239,10 @@ void DesktopBackgroundController::MoveDesktopToUnlockedContainer() { |
} |
void DesktopBackgroundController::OnWindowDestroying(aura::Window* window) { |
- window->SetProperty(internal::kWindowDesktopComponent, |
- static_cast<internal::DesktopBackgroundWidgetController*>(NULL)); |
- window->SetProperty(internal::kComponentWrapper, |
- static_cast<internal::ComponentWrapper*>(NULL)); |
+ window->SetProperty(internal::kWindowDesktopComponent, |
+ static_cast<internal::DesktopBackgroundWidgetController*>(NULL)); |
+ window->SetProperty(internal::kComponentWrapper, |
+ static_cast<internal::ComponentWrapper*>(NULL)); |
} |
void DesktopBackgroundController::SetDesktopBackgroundImageMode() { |
@@ -319,7 +319,13 @@ void DesktopBackgroundController::ReparentBackgroundWidgets(int src_container, |
aura::RootWindow* root_window = *iter; |
if (root_window->GetProperty(internal::kComponentWrapper)) { |
internal::DesktopBackgroundWidgetController* component = root_window-> |
- GetProperty(internal::kComponentWrapper)->component(); |
+ GetProperty(internal::kWindowDesktopComponent); |
+ // Wallpaper animation may not finish at this point. Try to get component |
+ // from kComponentWrapper instead. |
+ if (!component) { |
+ component = root_window->GetProperty(internal::kComponentWrapper)-> |
+ GetComponent(false); |
+ } |
DCHECK(component); |
component->Reparent(root_window, |
src_container, |