summaryrefslogtreecommitdiffstats
path: root/ui/views/corewm/window_modality_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/views/corewm/window_modality_controller.cc')
-rw-r--r--ui/views/corewm/window_modality_controller.cc18
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) {