OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/aura/mus/window_tree_client.h" | 5 #include "ui/aura/mus/window_tree_client.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 client_id_ = 101; | 271 client_id_ = 101; |
272 | 272 |
273 ui::mojom::WindowTreeFactoryPtr factory; | 273 ui::mojom::WindowTreeFactoryPtr factory; |
274 connector_->BindInterface(ui::mojom::kServiceName, &factory); | 274 connector_->BindInterface(ui::mojom::kServiceName, &factory); |
275 ui::mojom::WindowTreePtr window_tree; | 275 ui::mojom::WindowTreePtr window_tree; |
276 factory->CreateWindowTree(MakeRequest(&window_tree), | 276 factory->CreateWindowTree(MakeRequest(&window_tree), |
277 binding_.CreateInterfacePtrAndBind()); | 277 binding_.CreateInterfacePtrAndBind()); |
278 SetWindowTree(std::move(window_tree)); | 278 SetWindowTree(std::move(window_tree)); |
279 } | 279 } |
280 | 280 |
281 void WindowTreeClient::ConnectAsWindowManager() { | 281 void WindowTreeClient::ConnectAsWindowManager(bool dispatch_from_host) { |
282 DCHECK(window_manager_delegate_); | 282 DCHECK(window_manager_delegate_); |
| 283 dispatch_from_host_ = dispatch_from_host; |
283 | 284 |
284 ui::mojom::WindowManagerWindowTreeFactoryPtr factory; | 285 ui::mojom::WindowManagerWindowTreeFactoryPtr factory; |
285 connector_->BindInterface(ui::mojom::kServiceName, &factory); | 286 connector_->BindInterface(ui::mojom::kServiceName, &factory); |
286 ui::mojom::WindowTreePtr window_tree; | 287 ui::mojom::WindowTreePtr window_tree; |
287 factory->CreateWindowTree(MakeRequest(&window_tree), | 288 factory->CreateWindowTree(MakeRequest(&window_tree), |
288 binding_.CreateInterfacePtrAndBind()); | 289 binding_.CreateInterfacePtrAndBind()); |
289 SetWindowTree(std::move(window_tree)); | 290 SetWindowTree(std::move(window_tree)); |
290 } | 291 } |
291 | 292 |
292 void WindowTreeClient::SetCanFocus(Window* window, bool can_focus) { | 293 void WindowTreeClient::SetCanFocus(Window* window, bool can_focus) { |
(...skipping 952 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1245 // TODO: use |display_id| to find host and send there. | 1246 // TODO: use |display_id| to find host and send there. |
1246 if (!window || !window->GetWindow()->GetHost()) { | 1247 if (!window || !window->GetWindow()->GetHost()) { |
1247 tree_->OnWindowInputEventAck(event_id, ui::mojom::EventResult::UNHANDLED); | 1248 tree_->OnWindowInputEventAck(event_id, ui::mojom::EventResult::UNHANDLED); |
1248 return; | 1249 return; |
1249 } | 1250 } |
1250 | 1251 |
1251 EventAckHandler ack_handler(CreateEventResultCallback(event_id)); | 1252 EventAckHandler ack_handler(CreateEventResultCallback(event_id)); |
1252 // TODO(moshayedi): crbug.com/617222. No need to convert to ui::MouseEvent or | 1253 // TODO(moshayedi): crbug.com/617222. No need to convert to ui::MouseEvent or |
1253 // ui::TouchEvent once we have proper support for pointer events. | 1254 // ui::TouchEvent once we have proper support for pointer events. |
1254 std::unique_ptr<ui::Event> mapped_event = MapEvent(*event.get()); | 1255 std::unique_ptr<ui::Event> mapped_event = MapEvent(*event.get()); |
1255 DispatchEventToTarget(mapped_event.get(), window); | 1256 if (dispatch_from_host_ && mapped_event->IsLocatedEvent()) { |
| 1257 gfx::Point host_location = mapped_event->AsLocatedEvent()->location(); |
| 1258 aura::Window::ConvertPointToTarget(window->GetWindow(), |
| 1259 window->GetWindow()->GetHost()->window(), |
| 1260 &host_location); |
| 1261 mapped_event->AsLocatedEvent()->set_location(host_location); |
| 1262 GetWindowTreeHostMus(window)->SendEventToSink(mapped_event.get()); |
| 1263 } else { |
| 1264 DispatchEventToTarget(mapped_event.get(), window); |
| 1265 } |
1256 ack_handler.set_handled(mapped_event->handled()); | 1266 ack_handler.set_handled(mapped_event->handled()); |
1257 } | 1267 } |
1258 | 1268 |
1259 void WindowTreeClient::OnPointerEventObserved(std::unique_ptr<ui::Event> event, | 1269 void WindowTreeClient::OnPointerEventObserved(std::unique_ptr<ui::Event> event, |
1260 uint32_t window_id, | 1270 uint32_t window_id, |
1261 int64_t display_id) { | 1271 int64_t display_id) { |
1262 DCHECK(event); | 1272 DCHECK(event); |
1263 DCHECK(event->IsPointerEvent()); | 1273 DCHECK(event->IsPointerEvent()); |
1264 if (!has_pointer_watcher_) | 1274 if (!has_pointer_watcher_) |
1265 return; | 1275 return; |
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1960 return ScheduleInFlightChange(base::MakeUnique<InFlightCaptureChange>( | 1970 return ScheduleInFlightChange(base::MakeUnique<InFlightCaptureChange>( |
1961 this, capture_synchronizer_.get(), window)); | 1971 this, capture_synchronizer_.get(), window)); |
1962 } | 1972 } |
1963 | 1973 |
1964 uint32_t WindowTreeClient::CreateChangeIdForFocus(WindowMus* window) { | 1974 uint32_t WindowTreeClient::CreateChangeIdForFocus(WindowMus* window) { |
1965 return ScheduleInFlightChange(base::MakeUnique<InFlightFocusChange>( | 1975 return ScheduleInFlightChange(base::MakeUnique<InFlightFocusChange>( |
1966 this, focus_synchronizer_.get(), window)); | 1976 this, focus_synchronizer_.get(), window)); |
1967 } | 1977 } |
1968 | 1978 |
1969 } // namespace aura | 1979 } // namespace aura |
OLD | NEW |