OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/desktop_window_tree_host_mus.h" | 5 #include "ui/views/mus/desktop_window_tree_host_mus.h" |
6 | 6 |
7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.h" |
8 #include "ui/aura/client/aura_constants.h" | 8 #include "ui/aura/client/aura_constants.h" |
9 #include "ui/aura/client/drag_drop_client.h" | 9 #include "ui/aura/client/drag_drop_client.h" |
10 #include "ui/aura/client/focus_client.h" | 10 #include "ui/aura/client/focus_client.h" |
| 11 #include "ui/aura/env.h" |
11 #include "ui/aura/mus/window_tree_host_mus.h" | 12 #include "ui/aura/mus/window_tree_host_mus.h" |
12 #include "ui/aura/window.h" | 13 #include "ui/aura/window.h" |
13 #include "ui/display/screen.h" | 14 #include "ui/display/screen.h" |
14 #include "ui/views/corewm/tooltip_aura.h" | 15 #include "ui/views/corewm/tooltip_aura.h" |
15 #include "ui/views/mus/mus_client.h" | 16 #include "ui/views/mus/mus_client.h" |
16 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" | 17 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" |
17 #include "ui/views/widget/native_widget_aura.h" | 18 #include "ui/views/widget/native_widget_aura.h" |
18 #include "ui/views/widget/widget_delegate.h" | 19 #include "ui/views/widget/widget_delegate.h" |
19 #include "ui/wm/core/window_util.h" | 20 #include "ui/wm/core/window_util.h" |
20 #include "ui/wm/public/activation_client.h" | 21 #include "ui/wm/public/activation_client.h" |
21 | 22 |
22 namespace views { | 23 namespace views { |
23 | 24 |
24 DesktopWindowTreeHostMus::DesktopWindowTreeHostMus( | 25 DesktopWindowTreeHostMus::DesktopWindowTreeHostMus( |
25 internal::NativeWidgetDelegate* native_widget_delegate, | 26 internal::NativeWidgetDelegate* native_widget_delegate, |
26 DesktopNativeWidgetAura* desktop_native_widget_aura) | 27 DesktopNativeWidgetAura* desktop_native_widget_aura) |
27 : aura::WindowTreeHostMus(MusClient::Get()->window_tree_client()), | 28 : aura::WindowTreeHostMus(MusClient::Get()->window_tree_client()), |
28 native_widget_delegate_(native_widget_delegate), | 29 native_widget_delegate_(native_widget_delegate), |
29 desktop_native_widget_aura_(desktop_native_widget_aura), | 30 desktop_native_widget_aura_(desktop_native_widget_aura), |
30 fullscreen_restore_state_(ui::SHOW_STATE_DEFAULT), | 31 fullscreen_restore_state_(ui::SHOW_STATE_DEFAULT), |
31 close_widget_factory_(this) { | 32 close_widget_factory_(this) { |
| 33 aura::Env::GetInstance()->AddObserver(this); |
32 // TODO: use display id and bounds if available, likely need to pass in | 34 // TODO: use display id and bounds if available, likely need to pass in |
33 // InitParams for that. | 35 // InitParams for that. |
34 } | 36 } |
35 | 37 |
36 DesktopWindowTreeHostMus::~DesktopWindowTreeHostMus() { | 38 DesktopWindowTreeHostMus::~DesktopWindowTreeHostMus() { |
| 39 aura::Env::GetInstance()->RemoveObserver(this); |
37 desktop_native_widget_aura_->OnDesktopWindowTreeHostDestroyed(this); | 40 desktop_native_widget_aura_->OnDesktopWindowTreeHostDestroyed(this); |
38 } | 41 } |
39 | 42 |
40 bool DesktopWindowTreeHostMus::IsDocked() const { | 43 bool DesktopWindowTreeHostMus::IsDocked() const { |
41 return window()->GetProperty(aura::client::kShowStateKey) == | 44 return window()->GetProperty(aura::client::kShowStateKey) == |
42 ui::SHOW_STATE_DOCKED; | 45 ui::SHOW_STATE_DOCKED; |
43 } | 46 } |
44 | 47 |
45 void DesktopWindowTreeHostMus::Init(aura::Window* content_window, | 48 void DesktopWindowTreeHostMus::Init(aura::Window* content_window, |
46 const Widget::InitParams& params) {} | 49 const Widget::InitParams& params) {} |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 ->GetDisplayNearestWindow(const_cast<aura::Window*>(window())) | 195 ->GetDisplayNearestWindow(const_cast<aura::Window*>(window())) |
193 .work_area(); | 196 .work_area(); |
194 } | 197 } |
195 | 198 |
196 void DesktopWindowTreeHostMus::SetShape( | 199 void DesktopWindowTreeHostMus::SetShape( |
197 std::unique_ptr<SkRegion> native_region) { | 200 std::unique_ptr<SkRegion> native_region) { |
198 NOTIMPLEMENTED(); | 201 NOTIMPLEMENTED(); |
199 } | 202 } |
200 | 203 |
201 void DesktopWindowTreeHostMus::Activate() { | 204 void DesktopWindowTreeHostMus::Activate() { |
202 window()->Focus(); | 205 aura::Env::GetInstance()->SetActiveFocusClient( |
203 if (window()->GetProperty(aura::client::kDrawAttentionKey)) | 206 aura::client::GetFocusClient(window()), window()); |
204 window()->SetProperty(aura::client::kDrawAttentionKey, false); | 207 if (is_active_) { |
| 208 window()->Focus(); |
| 209 if (window()->GetProperty(aura::client::kDrawAttentionKey)) |
| 210 window()->SetProperty(aura::client::kDrawAttentionKey, false); |
| 211 } |
205 } | 212 } |
206 | 213 |
207 void DesktopWindowTreeHostMus::Deactivate() { | 214 void DesktopWindowTreeHostMus::Deactivate() { |
208 aura::client::GetActivationClient(window()->GetRootWindow()) | 215 // TODO: Deactivate() means focus next window, that needs to go to mus. |
209 ->DeactivateWindow(window()); | 216 NOTIMPLEMENTED(); |
210 } | 217 } |
211 | 218 |
212 bool DesktopWindowTreeHostMus::IsActive() const { | 219 bool DesktopWindowTreeHostMus::IsActive() const { |
213 return wm::IsActiveWindow(const_cast<aura::Window*>(window())); | 220 return is_active_; |
214 } | 221 } |
215 | 222 |
216 void DesktopWindowTreeHostMus::Maximize() { | 223 void DesktopWindowTreeHostMus::Maximize() { |
217 window()->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 224 window()->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
218 } | 225 } |
219 void DesktopWindowTreeHostMus::Minimize() { | 226 void DesktopWindowTreeHostMus::Minimize() { |
220 window()->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); | 227 window()->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED); |
221 } | 228 } |
222 | 229 |
223 void DesktopWindowTreeHostMus::Restore() { | 230 void DesktopWindowTreeHostMus::Restore() { |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 void DesktopWindowTreeHostMus::SizeConstraintsChanged() { | 353 void DesktopWindowTreeHostMus::SizeConstraintsChanged() { |
347 Widget* widget = native_widget_delegate_->AsWidget(); | 354 Widget* widget = native_widget_delegate_->AsWidget(); |
348 window()->SetProperty(aura::client::kCanMaximizeKey, | 355 window()->SetProperty(aura::client::kCanMaximizeKey, |
349 widget->widget_delegate()->CanMaximize()); | 356 widget->widget_delegate()->CanMaximize()); |
350 window()->SetProperty(aura::client::kCanMinimizeKey, | 357 window()->SetProperty(aura::client::kCanMinimizeKey, |
351 widget->widget_delegate()->CanMinimize()); | 358 widget->widget_delegate()->CanMinimize()); |
352 window()->SetProperty(aura::client::kCanResizeKey, | 359 window()->SetProperty(aura::client::kCanResizeKey, |
353 widget->widget_delegate()->CanResize()); | 360 widget->widget_delegate()->CanResize()); |
354 } | 361 } |
355 | 362 |
| 363 void DesktopWindowTreeHostMus::OnWindowInitialized(aura::Window* window) {} |
| 364 |
| 365 void DesktopWindowTreeHostMus::OnActiveFocusClientChanged( |
| 366 aura::client::FocusClient* focus_client, |
| 367 aura::Window* window) { |
| 368 if (window == this->window()) { |
| 369 is_active_ = true; |
| 370 desktop_native_widget_aura_->HandleActivationChanged(true); |
| 371 } else if (is_active_) { |
| 372 is_active_ = false; |
| 373 desktop_native_widget_aura_->HandleActivationChanged(false); |
| 374 } |
| 375 } |
| 376 |
356 } // namespace views | 377 } // namespace views |
OLD | NEW |