diff options
Diffstat (limited to 'ui/views/corewm/window_modality_controller.cc')
-rw-r--r-- | ui/views/corewm/window_modality_controller.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ui/views/corewm/window_modality_controller.cc b/ui/views/corewm/window_modality_controller.cc index 57bbe3c..907c823 100644 --- a/ui/views/corewm/window_modality_controller.cc +++ b/ui/views/corewm/window_modality_controller.cc @@ -120,11 +120,29 @@ ui::EventResult WindowModalityController::OnTouchEvent(ui::TouchEvent* event) { ui::ER_UNHANDLED; } +//////////////////////////////////////////////////////////////////////////////// +// WindowModalityController, aura::EnvObserver implementation: + void WindowModalityController::OnWindowInitialized(aura::Window* window) { windows_.push_back(window); window->AddObserver(this); } +//////////////////////////////////////////////////////////////////////////////// +// WindowModalityController, aura::WindowObserver implementation: + +void WindowModalityController::OnWindowPropertyChanged(aura::Window* window, + const void* key, + intptr_t old) { + // In tests, we sometimes create the modality relationship after a window is + // visible. + if (key == aura::client::kModalKey && + window->GetProperty(aura::client::kModalKey) != ui::MODAL_TYPE_NONE && + window->IsVisible()) { + ActivateWindow(window); + } +} + void WindowModalityController::OnWindowVisibilityChanged( aura::Window* window, bool visible) { |