Index: ash/root_window_controller.cc |
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc |
index 1fe7c37d9fb3a88ab88950859e4cb21b753e8eeb..ac6d2becbdafb8d9d808f3d7b6fad6c1c2f56503 100644 |
--- a/ash/root_window_controller.cc |
+++ b/ash/root_window_controller.cc |
@@ -306,7 +306,7 @@ class CrosAccessibilityObserver : public AccessibilityObserver { |
DISALLOW_COPY_AND_ASSIGN(CrosAccessibilityObserver); |
}; |
-#endif // OS_CHROMEOS |
+#endif // OS_CHROMEOS |
} // namespace |
@@ -526,6 +526,11 @@ void RootWindowController::OnWallpaperAnimationFinished(views::Widget* widget) { |
void RootWindowController::CloseChildWindows() { |
mouse_event_target_.reset(); |
+ // Remove observer as deactivating keyboard causes |docked_layout_manager_| |
+ // to fire notifications. |
+ if (docked_layout_manager_ && shelf_ && shelf_->shelf_layout_manager()) |
+ docked_layout_manager_->RemoveObserver(shelf_->shelf_layout_manager()); |
+ |
// Deactivate keyboard container before closing child windows and shutting |
// down associated layout managers. |
DeactivateKeyboard(keyboard::KeyboardController::GetInstance()); |
@@ -537,8 +542,6 @@ void RootWindowController::CloseChildWindows() { |
} |
// docked_layout_manager_ needs to be shut down before windows are destroyed. |
if (docked_layout_manager_) { |
- if (shelf_ && shelf_->shelf_layout_manager()) |
- docked_layout_manager_->RemoveObserver(shelf_->shelf_layout_manager()); |
docked_layout_manager_->Shutdown(); |
docked_layout_manager_ = NULL; |
} |