OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ash/wm/window_modality_controller.h" | 5 #include "ui/views/corewm/window_modality_controller.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "ui/aura/client/aura_constants.h" | 9 #include "ui/aura/client/aura_constants.h" |
10 #include "ui/aura/client/capture_client.h" | 10 #include "ui/aura/client/capture_client.h" |
11 #include "ui/aura/env.h" | 11 #include "ui/aura/env.h" |
12 #include "ui/aura/root_window.h" | 12 #include "ui/aura/root_window.h" |
13 #include "ui/aura/window.h" | 13 #include "ui/aura/window.h" |
14 #include "ui/aura/window_property.h" | 14 #include "ui/aura/window_property.h" |
15 #include "ui/base/events/event.h" | 15 #include "ui/base/events/event.h" |
16 #include "ui/base/ui_base_types.h" | 16 #include "ui/base/ui_base_types.h" |
17 #include "ui/views/corewm/window_animations.h" | 17 #include "ui/views/corewm/window_animations.h" |
18 #include "ui/views/corewm/window_util.h" | 18 #include "ui/views/corewm/window_util.h" |
19 | 19 |
20 namespace ash { | 20 namespace views { |
| 21 namespace corewm { |
21 | 22 |
22 // Transient child's modal parent. | 23 // Transient child's modal parent. |
23 extern const aura::WindowProperty<aura::Window*>* const kModalParentKey; | 24 extern const aura::WindowProperty<aura::Window*>* const kModalParentKey; |
24 DEFINE_WINDOW_PROPERTY_KEY(aura::Window*, kModalParentKey, NULL); | 25 DEFINE_WINDOW_PROPERTY_KEY(aura::Window*, kModalParentKey, NULL); |
25 | 26 |
26 namespace { | 27 namespace { |
27 | 28 |
28 bool HasAncestor(aura::Window* window, aura::Window* ancestor) { | 29 bool HasAncestor(aura::Window* window, aura::Window* ancestor) { |
29 if (!window) | 30 if (!window) |
30 return false; | 31 return false; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 void SetModalParent(aura::Window* child, aura::Window* parent) { | 74 void SetModalParent(aura::Window* child, aura::Window* parent) { |
74 child->SetProperty(kModalParentKey, parent); | 75 child->SetProperty(kModalParentKey, parent); |
75 } | 76 } |
76 | 77 |
77 aura::Window* GetModalTransient(aura::Window* window) { | 78 aura::Window* GetModalTransient(aura::Window* window) { |
78 if (!window) | 79 if (!window) |
79 return NULL; | 80 return NULL; |
80 | 81 |
81 // We always want to check the for the transient child of the activatable | 82 // We always want to check the for the transient child of the activatable |
82 // window. | 83 // window. |
83 aura::Window* activatable = views::corewm::GetActivatableWindow(window); | 84 aura::Window* activatable = GetActivatableWindow(window); |
84 if (!activatable) | 85 if (!activatable) |
85 return NULL; | 86 return NULL; |
86 | 87 |
87 return GetModalTransientChild(activatable, window); | 88 return GetModalTransientChild(activatable, window); |
88 } | 89 } |
89 | 90 |
90 namespace internal { | |
91 | |
92 //////////////////////////////////////////////////////////////////////////////// | 91 //////////////////////////////////////////////////////////////////////////////// |
93 // WindowModalityController, public: | 92 // WindowModalityController, public: |
94 | 93 |
95 WindowModalityController::WindowModalityController() { | 94 WindowModalityController::WindowModalityController() { |
96 aura::Env::GetInstance()->AddObserver(this); | 95 aura::Env::GetInstance()->AddObserver(this); |
97 } | 96 } |
98 | 97 |
99 WindowModalityController::~WindowModalityController() { | 98 WindowModalityController::~WindowModalityController() { |
100 aura::Env::GetInstance()->RemoveObserver(this); | 99 aura::Env::GetInstance()->RemoveObserver(this); |
101 for (size_t i = 0; i < windows_.size(); ++i) | 100 for (size_t i = 0; i < windows_.size(); ++i) |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 void WindowModalityController::OnWindowDestroyed(aura::Window* window) { | 142 void WindowModalityController::OnWindowDestroyed(aura::Window* window) { |
144 windows_.erase(std::find(windows_.begin(), windows_.end(), window)); | 143 windows_.erase(std::find(windows_.begin(), windows_.end(), window)); |
145 window->RemoveObserver(this); | 144 window->RemoveObserver(this); |
146 } | 145 } |
147 | 146 |
148 bool WindowModalityController::ProcessLocatedEvent(aura::Window* target, | 147 bool WindowModalityController::ProcessLocatedEvent(aura::Window* target, |
149 ui::LocatedEvent* event) { | 148 ui::LocatedEvent* event) { |
150 aura::Window* modal_transient_child = GetModalTransient(target); | 149 aura::Window* modal_transient_child = GetModalTransient(target); |
151 if (modal_transient_child && (event->type() == ui::ET_MOUSE_PRESSED || | 150 if (modal_transient_child && (event->type() == ui::ET_MOUSE_PRESSED || |
152 event->type() == ui::ET_TOUCH_PRESSED)) { | 151 event->type() == ui::ET_TOUCH_PRESSED)) { |
153 views::corewm::AnimateWindow(modal_transient_child, | 152 AnimateWindow(modal_transient_child, WINDOW_ANIMATION_TYPE_BOUNCE); |
154 views::corewm::WINDOW_ANIMATION_TYPE_BOUNCE); | |
155 } | 153 } |
156 return !!modal_transient_child; | 154 return !!modal_transient_child; |
157 } | 155 } |
158 | 156 |
159 } // namespace internal | 157 } // namespace corewm |
160 } // namespace ash | 158 } // namespace views |
OLD | NEW |