OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "ui/views/mus/native_widget_mus.h" | 5 #include "ui/views/mus/native_widget_mus.h" |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/thread_task_runner_handle.h" | 8 #include "base/thread_task_runner_handle.h" |
9 #include "components/mus/public/cpp/property_type_converters.h" | 9 #include "components/mus/public/cpp/property_type_converters.h" |
10 #include "components/mus/public/cpp/window.h" | 10 #include "components/mus/public/cpp/window.h" |
11 #include "components/mus/public/cpp/window_property.h" | 11 #include "components/mus/public/cpp/window_property.h" |
| 12 #include "components/mus/public/cpp/window_tree_connection.h" |
12 #include "mojo/converters/geometry/geometry_type_converters.h" | 13 #include "mojo/converters/geometry/geometry_type_converters.h" |
13 #include "ui/aura/client/default_capture_client.h" | 14 #include "ui/aura/client/default_capture_client.h" |
14 #include "ui/aura/client/window_tree_client.h" | 15 #include "ui/aura/client/window_tree_client.h" |
15 #include "ui/aura/env.h" | 16 #include "ui/aura/env.h" |
16 #include "ui/aura/layout_manager.h" | 17 #include "ui/aura/layout_manager.h" |
17 #include "ui/aura/mus/mus_util.h" | 18 #include "ui/aura/mus/mus_util.h" |
18 #include "ui/aura/window.h" | 19 #include "ui/aura/window.h" |
19 #include "ui/aura/window_property.h" | 20 #include "ui/aura/window_property.h" |
20 #include "ui/base/hit_test.h" | 21 #include "ui/base/hit_test.h" |
21 #include "ui/gfx/canvas.h" | 22 #include "ui/gfx/canvas.h" |
22 #include "ui/native_theme/native_theme_aura.h" | 23 #include "ui/native_theme/native_theme_aura.h" |
23 #include "ui/views/mus/platform_window_mus.h" | 24 #include "ui/views/mus/platform_window_mus.h" |
24 #include "ui/views/mus/surface_context_factory.h" | 25 #include "ui/views/mus/surface_context_factory.h" |
25 #include "ui/views/mus/window_manager_constants_converters.h" | 26 #include "ui/views/mus/window_manager_constants_converters.h" |
26 #include "ui/views/mus/window_manager_frame_values.h" | 27 #include "ui/views/mus/window_manager_frame_values.h" |
27 #include "ui/views/mus/window_tree_host_mus.h" | 28 #include "ui/views/mus/window_tree_host_mus.h" |
28 #include "ui/views/widget/widget_delegate.h" | 29 #include "ui/views/widget/widget_delegate.h" |
29 #include "ui/views/window/custom_frame_view.h" | 30 #include "ui/views/window/custom_frame_view.h" |
30 #include "ui/wm/core/base_focus_rules.h" | 31 #include "ui/wm/core/base_focus_rules.h" |
31 #include "ui/wm/core/capture_controller.h" | 32 #include "ui/wm/core/capture_controller.h" |
32 #include "ui/wm/core/focus_controller.h" | 33 #include "ui/wm/core/focus_controller.h" |
33 | 34 |
34 DECLARE_WINDOW_PROPERTY_TYPE(mus::Window*); | 35 DECLARE_WINDOW_PROPERTY_TYPE(mus::Window*); |
35 | 36 |
36 namespace views { | 37 namespace views { |
37 namespace { | 38 namespace { |
38 | 39 |
39 DEFINE_WINDOW_PROPERTY_KEY(mus::Window*, kMusWindow, nullptr); | 40 DEFINE_WINDOW_PROPERTY_KEY(mus::Window*, kMusWindow, nullptr); |
40 | 41 |
| 42 MUS_DEFINE_WINDOW_PROPERTY_KEY(NativeWidgetMus*, kNativeWidgetMusKey, nullptr); |
| 43 |
41 // TODO: figure out what this should be. | 44 // TODO: figure out what this should be. |
42 class FocusRulesImpl : public wm::BaseFocusRules { | 45 class FocusRulesImpl : public wm::BaseFocusRules { |
43 public: | 46 public: |
44 FocusRulesImpl() {} | 47 FocusRulesImpl() {} |
45 ~FocusRulesImpl() override {} | 48 ~FocusRulesImpl() override {} |
46 | 49 |
47 bool SupportsChildActivation(aura::Window* window) const override { | 50 bool SupportsChildActivation(aura::Window* window) const override { |
48 return true; | 51 return true; |
49 } | 52 } |
50 | 53 |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 : window_(window), | 181 : window_(window), |
179 shell_(shell), | 182 shell_(shell), |
180 native_widget_delegate_(delegate), | 183 native_widget_delegate_(delegate), |
181 surface_type_(surface_type), | 184 surface_type_(surface_type), |
182 show_state_before_fullscreen_(ui::PLATFORM_WINDOW_STATE_UNKNOWN), | 185 show_state_before_fullscreen_(ui::PLATFORM_WINDOW_STATE_UNKNOWN), |
183 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), | 186 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), |
184 content_(new aura::Window(this)), | 187 content_(new aura::Window(this)), |
185 close_widget_factory_(this) { | 188 close_widget_factory_(this) { |
186 // TODO(fsamuel): Figure out lifetime of |window_|. | 189 // TODO(fsamuel): Figure out lifetime of |window_|. |
187 aura::SetMusWindow(content_, window_); | 190 aura::SetMusWindow(content_, window_); |
| 191 |
| 192 window->SetLocalProperty(kNativeWidgetMusKey, this); |
188 } | 193 } |
189 | 194 |
190 NativeWidgetMus::~NativeWidgetMus() { | 195 NativeWidgetMus::~NativeWidgetMus() { |
191 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) | 196 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) |
192 delete native_widget_delegate_; | 197 delete native_widget_delegate_; |
193 else | 198 else |
194 CloseNow(); | 199 CloseNow(); |
195 } | 200 } |
196 | 201 |
| 202 // static |
| 203 void NativeWidgetMus::NotifyFrameChanged( |
| 204 mus::WindowTreeConnection* connection) { |
| 205 for (mus::Window* window : connection->GetRoots()) { |
| 206 NativeWidgetMus* native_widget = |
| 207 window->GetLocalProperty(kNativeWidgetMusKey); |
| 208 if (native_widget && native_widget->GetWidget()->non_client_view()) { |
| 209 native_widget->GetWidget()->non_client_view()->Layout(); |
| 210 native_widget->GetWidget()->non_client_view()->SchedulePaint(); |
| 211 native_widget->UpdateClientArea(); |
| 212 } |
| 213 } |
| 214 } |
| 215 |
197 void NativeWidgetMus::OnPlatformWindowClosed() { | 216 void NativeWidgetMus::OnPlatformWindowClosed() { |
198 native_widget_delegate_->OnNativeWidgetDestroying(); | 217 native_widget_delegate_->OnNativeWidgetDestroying(); |
199 | 218 |
200 window_tree_client_.reset(); // Uses |content_|. | 219 window_tree_client_.reset(); // Uses |content_|. |
201 capture_client_.reset(); // Uses |content_|. | 220 capture_client_.reset(); // Uses |content_|. |
202 | 221 |
203 window_tree_host_->RemoveObserver(this); | 222 window_tree_host_->RemoveObserver(this); |
204 window_tree_host_.reset(); | 223 window_tree_host_.reset(); |
205 | 224 |
206 window_ = nullptr; | 225 window_ = nullptr; |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 | 849 |
831 void NativeWidgetMus::OnGestureEvent(ui::GestureEvent* event) { | 850 void NativeWidgetMus::OnGestureEvent(ui::GestureEvent* event) { |
832 native_widget_delegate_->OnGestureEvent(event); | 851 native_widget_delegate_->OnGestureEvent(event); |
833 } | 852 } |
834 | 853 |
835 void NativeWidgetMus::OnHostCloseRequested(const aura::WindowTreeHost* host) { | 854 void NativeWidgetMus::OnHostCloseRequested(const aura::WindowTreeHost* host) { |
836 GetWidget()->Close(); | 855 GetWidget()->Close(); |
837 } | 856 } |
838 | 857 |
839 } // namespace views | 858 } // namespace views |
OLD | NEW |