| Index: ash/shell.cc
|
| diff --git a/ash/shell.cc b/ash/shell.cc
|
| index 95b6f9d1fc074465b9c90c76805d54667cd16d1d..ec062d02be661fbfc92bd1968565423984ad6f1f 100644
|
| --- a/ash/shell.cc
|
| +++ b/ash/shell.cc
|
| @@ -233,6 +233,7 @@ Shell::~Shell() {
|
|
|
| // The status area needs to be shut down before the windows are destroyed.
|
| status_area_widget_->Shutdown();
|
| + status_area_widget_ = NULL;
|
|
|
| // AppList needs to be released before shelf layout manager, which is
|
| // destroyed with launcher container in the loop below. However, app list
|
| @@ -671,7 +672,7 @@ void Shell::CreateModalBackground() {
|
| RootWindowControllerList controllers = GetAllRootWindowControllers();
|
| for (RootWindowControllerList::iterator iter = controllers.begin();
|
| iter != controllers.end(); ++iter)
|
| - (*iter)->GetSystemModalLayoutManager()->CreateModalBackground();
|
| + (*iter)->GetSystemModalLayoutManager(NULL)->CreateModalBackground();
|
| }
|
|
|
| void Shell::OnModalWindowRemoved(aura::Window* removed) {
|
| @@ -679,24 +680,26 @@ void Shell::OnModalWindowRemoved(aura::Window* removed) {
|
| bool activated = false;
|
| for (RootWindowControllerList::iterator iter = controllers.begin();
|
| iter != controllers.end() && !activated; ++iter) {
|
| - activated =
|
| - (*iter)->GetSystemModalLayoutManager()->ActivateNextModalWindow();
|
| + activated = (*iter)->GetSystemModalLayoutManager(removed)->
|
| + ActivateNextModalWindow();
|
| }
|
| if (!activated) {
|
| RemoveEnvEventFilter(modality_filter_.get());
|
| modality_filter_.reset();
|
| for (RootWindowControllerList::iterator iter = controllers.begin();
|
| iter != controllers.end(); ++iter)
|
| - (*iter)->GetSystemModalLayoutManager()->DestroyModalBackground();
|
| + (*iter)->GetSystemModalLayoutManager(removed)->DestroyModalBackground();
|
| }
|
| }
|
|
|
| SystemTrayDelegate* Shell::tray_delegate() {
|
| - return status_area_widget_->system_tray_delegate();
|
| + return status_area_widget_ ? status_area_widget_->system_tray_delegate() :
|
| + NULL;
|
| }
|
|
|
| SystemTray* Shell::system_tray() {
|
| - return status_area_widget_->system_tray();
|
| + return status_area_widget_ ? status_area_widget_->system_tray() :
|
| + NULL;
|
| }
|
|
|
| void Shell::InitRootWindowForSecondaryDisplay(aura::RootWindow* root) {
|
| @@ -758,9 +761,9 @@ void Shell::InitRootWindowController(
|
| root_window->GetChildById(internal::kShellWindowId_AlwaysOnTopContainer));
|
| root_window->SetProperty(internal::kAlwaysOnTopControllerKey,
|
| always_on_top_controller);
|
| - if (GetPrimaryRootWindowController()->GetSystemModalLayoutManager()->
|
| + if (GetPrimaryRootWindowController()->GetSystemModalLayoutManager(NULL)->
|
| has_modal_background()) {
|
| - controller->GetSystemModalLayoutManager()->CreateModalBackground();
|
| + controller->GetSystemModalLayoutManager(NULL)->CreateModalBackground();
|
| }
|
|
|
| window_cycle_controller_->OnRootWindowAdded(root_window);
|
| @@ -820,7 +823,7 @@ bool Shell::CanWindowReceiveEvents(aura::Window* window) {
|
| RootWindowControllerList controllers = GetAllRootWindowControllers();
|
| for (RootWindowControllerList::iterator iter = controllers.begin();
|
| iter != controllers.end(); ++iter) {
|
| - if ((*iter)->GetSystemModalLayoutManager()->
|
| + if ((*iter)->GetSystemModalLayoutManager(window)->
|
| CanWindowReceiveEvents(window)) {
|
| return true;
|
| }
|
|
|