| 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 "components/mus/ws/window_tree_host_impl.h" | 5 #include "components/mus/ws/window_tree_host_impl.h" |
| 6 | 6 |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "components/mus/common/types.h" | 8 #include "components/mus/common/types.h" |
| 9 #include "components/mus/ws/connection_manager.h" | 9 #include "components/mus/ws/connection_manager.h" |
| 10 #include "components/mus/ws/display_manager.h" | 10 #include "components/mus/ws/display_manager.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 if (windows_needing_frame_destruction_.count(window)) | 76 if (windows_needing_frame_destruction_.count(window)) |
| 77 return; | 77 return; |
| 78 windows_needing_frame_destruction_.insert(window); | 78 windows_needing_frame_destruction_.insert(window); |
| 79 window->AddObserver(this); | 79 window->AddObserver(this); |
| 80 } | 80 } |
| 81 | 81 |
| 82 const mojom::ViewportMetrics& WindowTreeHostImpl::GetViewportMetrics() const { | 82 const mojom::ViewportMetrics& WindowTreeHostImpl::GetViewportMetrics() const { |
| 83 return display_manager_->GetViewportMetrics(); | 83 return display_manager_->GetViewportMetrics(); |
| 84 } | 84 } |
| 85 | 85 |
| 86 void WindowTreeHostImpl::SetCapture(ServerWindow* window) { |
| 87 ServerWindow* capture_window = event_dispatcher_.capture_window(); |
| 88 if (capture_window) { |
| 89 WindowTreeImpl* connection = |
| 90 connection_manager_->GetConnection(capture_window->id().connection_id); |
| 91 if (connection) |
| 92 connection->ProcessLostCapture(capture_window); |
| 93 } |
| 94 event_dispatcher_.SetCaptureWindow(window); |
| 95 if (window) |
| 96 display_manager_->SetCapture(); |
| 97 else |
| 98 display_manager_->ReleaseCapture(); |
| 99 } |
| 100 |
| 86 void WindowTreeHostImpl::SetFocusedWindow(ServerWindow* new_focused_window) { | 101 void WindowTreeHostImpl::SetFocusedWindow(ServerWindow* new_focused_window) { |
| 87 ServerWindow* old_focused_window = focus_controller_->GetFocusedWindow(); | 102 ServerWindow* old_focused_window = focus_controller_->GetFocusedWindow(); |
| 88 if (old_focused_window == new_focused_window) | 103 if (old_focused_window == new_focused_window) |
| 89 return; | 104 return; |
| 90 DCHECK(root_window()->Contains(new_focused_window)); | 105 DCHECK(root_window()->Contains(new_focused_window)); |
| 91 focus_controller_->SetFocusedWindow(new_focused_window); | 106 focus_controller_->SetFocusedWindow(new_focused_window); |
| 92 // TODO(beng): have the FocusController notify us via FocusControllerDelegate. | 107 // TODO(beng): have the FocusController notify us via FocusControllerDelegate. |
| 93 OnFocusChanged(old_focused_window, new_focused_window); | 108 OnFocusChanged(old_focused_window, new_focused_window); |
| 94 } | 109 } |
| 95 | 110 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 } | 158 } |
| 144 | 159 |
| 145 ServerWindow* WindowTreeHostImpl::GetRootWindow() { | 160 ServerWindow* WindowTreeHostImpl::GetRootWindow() { |
| 146 return root_.get(); | 161 return root_.get(); |
| 147 } | 162 } |
| 148 | 163 |
| 149 void WindowTreeHostImpl::OnEvent(mojom::EventPtr event) { | 164 void WindowTreeHostImpl::OnEvent(mojom::EventPtr event) { |
| 150 event_dispatcher_.OnEvent(event.Pass()); | 165 event_dispatcher_.OnEvent(event.Pass()); |
| 151 } | 166 } |
| 152 | 167 |
| 168 void WindowTreeHostImpl::OnLostCapture() { |
| 169 SetCapture(nullptr); |
| 170 } |
| 171 |
| 153 void WindowTreeHostImpl::OnDisplayClosed() { | 172 void WindowTreeHostImpl::OnDisplayClosed() { |
| 154 if (delegate_) | 173 if (delegate_) |
| 155 delegate_->OnDisplayClosed(); | 174 delegate_->OnDisplayClosed(); |
| 156 } | 175 } |
| 157 | 176 |
| 158 void WindowTreeHostImpl::OnViewportMetricsChanged( | 177 void WindowTreeHostImpl::OnViewportMetricsChanged( |
| 159 const mojom::ViewportMetrics& old_metrics, | 178 const mojom::ViewportMetrics& old_metrics, |
| 160 const mojom::ViewportMetrics& new_metrics) { | 179 const mojom::ViewportMetrics& new_metrics) { |
| 161 if (!root_) { | 180 if (!root_) { |
| 162 root_.reset(connection_manager_->CreateServerWindow( | 181 root_.reset(connection_manager_->CreateServerWindow( |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 | 273 |
| 255 void WindowTreeHostImpl::SetFocusedWindowFromEventDispatcher( | 274 void WindowTreeHostImpl::SetFocusedWindowFromEventDispatcher( |
| 256 ServerWindow* new_focused_window) { | 275 ServerWindow* new_focused_window) { |
| 257 SetFocusedWindow(new_focused_window); | 276 SetFocusedWindow(new_focused_window); |
| 258 } | 277 } |
| 259 | 278 |
| 260 ServerWindow* WindowTreeHostImpl::GetFocusedWindowForEventDispatcher() { | 279 ServerWindow* WindowTreeHostImpl::GetFocusedWindowForEventDispatcher() { |
| 261 return GetFocusedWindow(); | 280 return GetFocusedWindow(); |
| 262 } | 281 } |
| 263 | 282 |
| 283 void WindowTreeHostImpl::OnLostCapture(ServerWindow* window) { |
| 284 DCHECK(window); |
| 285 WindowTreeImpl* connection = |
| 286 connection_manager_->GetConnection(window->id().connection_id); |
| 287 if (connection) |
| 288 connection->ProcessLostCapture(window); |
| 289 } |
| 290 |
| 264 void WindowTreeHostImpl::DispatchInputEventToWindow(ServerWindow* target, | 291 void WindowTreeHostImpl::DispatchInputEventToWindow(ServerWindow* target, |
| 265 bool in_nonclient_area, | 292 bool in_nonclient_area, |
| 266 mojom::EventPtr event) { | 293 mojom::EventPtr event) { |
| 267 // If the event is in the non-client area the event goes to the owner of | 294 // If the event is in the non-client area the event goes to the owner of |
| 268 // the window. Otherwise if the window is an embed root, forward to the | 295 // the window. Otherwise if the window is an embed root, forward to the |
| 269 // embedded window. | 296 // embedded window. |
| 270 WindowTreeImpl* connection = | 297 WindowTreeImpl* connection = |
| 271 in_nonclient_area | 298 in_nonclient_area |
| 272 ? connection_manager_->GetConnection(target->id().connection_id) | 299 ? connection_manager_->GetConnection(target->id().connection_id) |
| 273 : connection_manager_->GetConnectionWithRoot(target->id()); | 300 : connection_manager_->GetConnectionWithRoot(target->id()); |
| 274 if (!connection) { | 301 if (!connection) { |
| 275 DCHECK(!in_nonclient_area); | 302 DCHECK(!in_nonclient_area); |
| 276 connection = connection_manager_->GetConnection(target->id().connection_id); | 303 connection = connection_manager_->GetConnection(target->id().connection_id); |
| 277 } | 304 } |
| 278 connection->client()->OnWindowInputEvent(WindowIdToTransportId(target->id()), | 305 connection->client()->OnWindowInputEvent(WindowIdToTransportId(target->id()), |
| 279 event.Pass(), | 306 event.Pass(), |
| 280 base::Bind(&base::DoNothing)); | 307 base::Bind(&base::DoNothing)); |
| 281 } | 308 } |
| 282 | 309 |
| 283 void WindowTreeHostImpl::OnWindowDestroyed(ServerWindow* window) { | 310 void WindowTreeHostImpl::OnWindowDestroyed(ServerWindow* window) { |
| 284 windows_needing_frame_destruction_.erase(window); | 311 windows_needing_frame_destruction_.erase(window); |
| 285 window->RemoveObserver(this); | 312 window->RemoveObserver(this); |
| 286 } | 313 } |
| 287 | 314 |
| 288 } // namespace ws | 315 } // namespace ws |
| 289 } // namespace mus | 316 } // namespace mus |
| OLD | NEW |