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 "services/ui/ws/window_manager_state.h" | 5 #include "services/ui/ws/window_manager_state.h" |
6 | 6 |
7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
8 #include "services/shell/public/interfaces/connector.mojom.h" | 8 #include "services/shell/public/interfaces/connector.mojom.h" |
9 #include "services/ui/common/event_matcher_util.h" | 9 #include "services/ui/common/event_matcher_util.h" |
10 #include "services/ui/ws/accelerator.h" | 10 #include "services/ui/ws/accelerator.h" |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 WindowTree* tree = nullptr; | 489 WindowTree* tree = nullptr; |
490 if (in_nonclient_area) { | 490 if (in_nonclient_area) { |
491 tree = window_server()->GetTreeWithId(window->id().client_id); | 491 tree = window_server()->GetTreeWithId(window->id().client_id); |
492 } else { | 492 } else { |
493 // If the window is an embed root, forward to the embedded window. | 493 // If the window is an embed root, forward to the embedded window. |
494 tree = window_server()->GetTreeWithRoot(window); | 494 tree = window_server()->GetTreeWithRoot(window); |
495 if (!tree) | 495 if (!tree) |
496 tree = window_server()->GetTreeWithId(window->id().client_id); | 496 tree = window_server()->GetTreeWithId(window->id().client_id); |
497 } | 497 } |
498 | 498 |
499 const ServerWindow* embed_root = | 499 if (tree) { |
500 tree->HasRoot(window) ? window : GetEmbedRoot(window); | 500 const ServerWindow* embed_root = |
501 while (tree && tree->embedder_intercepts_events()) { | 501 tree->HasRoot(window) ? window : GetEmbedRoot(window); |
502 DCHECK(tree->HasRoot(embed_root)); | 502 while (tree && tree->embedder_intercepts_events()) { |
503 tree = window_server()->GetTreeWithId(embed_root->id().client_id); | 503 DCHECK(tree->HasRoot(embed_root)); |
504 embed_root = GetEmbedRoot(embed_root); | 504 tree = window_server()->GetTreeWithId(embed_root->id().client_id); |
| 505 embed_root = GetEmbedRoot(embed_root); |
| 506 } |
505 } | 507 } |
506 | 508 |
507 if (!tree) { | 509 if (!tree) { |
508 DCHECK(in_nonclient_area); | 510 DCHECK(in_nonclient_area); |
509 tree = window_tree_; | 511 tree = window_tree_; |
510 } | 512 } |
511 return tree->id(); | 513 return tree->id(); |
512 } | 514 } |
513 | 515 |
514 ServerWindow* WindowManagerState::GetRootWindowContaining( | 516 ServerWindow* WindowManagerState::GetRootWindowContaining( |
515 const gfx::Point& location) { | 517 const gfx::Point& location) { |
516 if (display_manager()->displays().empty()) | 518 if (display_manager()->displays().empty()) |
517 return nullptr; | 519 return nullptr; |
518 | 520 |
519 // TODO(sky): this isn't right. To correctly implement need bounds of | 521 // TODO(sky): this isn't right. To correctly implement need bounds of |
520 // Display, which we aren't tracking yet. For now, use the first display. | 522 // Display, which we aren't tracking yet. For now, use the first display. |
521 Display* display = *(display_manager()->displays().begin()); | 523 Display* display = *(display_manager()->displays().begin()); |
522 WindowManagerDisplayRoot* display_root = | 524 WindowManagerDisplayRoot* display_root = |
523 display->GetWindowManagerDisplayRootForUser(user_id()); | 525 display->GetWindowManagerDisplayRootForUser(user_id()); |
524 return display_root ? display_root->root() : nullptr; | 526 return display_root ? display_root->root() : nullptr; |
525 } | 527 } |
526 | 528 |
527 void WindowManagerState::OnEventTargetNotFound(const ui::Event& event) { | 529 void WindowManagerState::OnEventTargetNotFound(const ui::Event& event) { |
528 window_server()->SendToEventObservers(event, user_id(), | 530 window_server()->SendToEventObservers(event, user_id(), |
529 nullptr /* ignore_tree */); | 531 nullptr /* ignore_tree */); |
530 } | 532 } |
531 | 533 |
532 } // namespace ws | 534 } // namespace ws |
533 } // namespace ui | 535 } // namespace ui |
OLD | NEW |