| 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 "ash/display/unified_mouse_warp_controller.h" | 5 #include "ash/display/unified_mouse_warp_controller.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #include "ash/display/display_manager.h" | 9 #include "ash/display/display_manager.h" |
| 10 #include "ash/display/display_util.h" | 10 #include "ash/display/display_util.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 ->window_tree_host_manager() | 32 ->window_tree_host_manager() |
| 33 ->mirror_window_controller() | 33 ->mirror_window_controller() |
| 34 ->GetAshWindowTreeHostForDisplayId(display_id); | 34 ->GetAshWindowTreeHostForDisplayId(display_id); |
| 35 } | 35 } |
| 36 | 36 |
| 37 #if defined(USE_OZONE) | 37 #if defined(USE_OZONE) |
| 38 // Find a WindowTreeHost used for mirroring displays that contains | 38 // Find a WindowTreeHost used for mirroring displays that contains |
| 39 // the |point_in_screen|. Returns nullptr if such WTH does not exist. | 39 // the |point_in_screen|. Returns nullptr if such WTH does not exist. |
| 40 aura::WindowTreeHost* FindMirroringWindowTreeHostFromScreenPoint( | 40 aura::WindowTreeHost* FindMirroringWindowTreeHostFromScreenPoint( |
| 41 const gfx::Point& point_in_screen) { | 41 const gfx::Point& point_in_screen) { |
| 42 display::DisplayList mirroring_display_list = | 42 display::Displays mirroring_display_list = |
| 43 Shell::GetInstance() | 43 Shell::GetInstance() |
| 44 ->display_manager() | 44 ->display_manager() |
| 45 ->software_mirroring_display_list(); | 45 ->software_mirroring_display_list(); |
| 46 int index = display::FindDisplayIndexContainingPoint(mirroring_display_list, | 46 int index = display::FindDisplayIndexContainingPoint(mirroring_display_list, |
| 47 point_in_screen); | 47 point_in_screen); |
| 48 if (index < 0) | 48 if (index < 0) |
| 49 return nullptr; | 49 return nullptr; |
| 50 return GetMirroringAshWindowTreeHostForDisplayId( | 50 return GetMirroringAshWindowTreeHostForDisplayId( |
| 51 mirroring_display_list[index].id()) | 51 mirroring_display_list[index].id()) |
| 52 ->AsWindowTreeHost(); | 52 ->AsWindowTreeHost(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 71 gfx::Point point_in_unified_host = event->location(); | 71 gfx::Point point_in_unified_host = event->location(); |
| 72 ::wm::ConvertPointToScreen(target, &point_in_unified_host); | 72 ::wm::ConvertPointToScreen(target, &point_in_unified_host); |
| 73 // The display bounds of the mirroring windows isn't scaled, so | 73 // The display bounds of the mirroring windows isn't scaled, so |
| 74 // transform back to the host coordinates. | 74 // transform back to the host coordinates. |
| 75 target->GetHost()->GetRootTransform().TransformPoint(&point_in_unified_host); | 75 target->GetHost()->GetRootTransform().TransformPoint(&point_in_unified_host); |
| 76 | 76 |
| 77 if (current_cursor_display_id_ != display::Display::kInvalidDisplayID) { | 77 if (current_cursor_display_id_ != display::Display::kInvalidDisplayID) { |
| 78 aura::client::CursorClient* cursor_client = | 78 aura::client::CursorClient* cursor_client = |
| 79 aura::client::GetCursorClient(target->GetRootWindow()); | 79 aura::client::GetCursorClient(target->GetRootWindow()); |
| 80 if (cursor_client) { | 80 if (cursor_client) { |
| 81 display::DisplayList mirroring_display_list = | 81 display::Displays mirroring_display_list = |
| 82 Shell::GetInstance() | 82 Shell::GetInstance() |
| 83 ->display_manager() | 83 ->display_manager() |
| 84 ->software_mirroring_display_list(); | 84 ->software_mirroring_display_list(); |
| 85 int index = display::FindDisplayIndexContainingPoint( | 85 int index = display::FindDisplayIndexContainingPoint( |
| 86 mirroring_display_list, point_in_unified_host); | 86 mirroring_display_list, point_in_unified_host); |
| 87 if (index >= 0) { | 87 if (index >= 0) { |
| 88 const display::Display& new_display = mirroring_display_list[index]; | 88 const display::Display& new_display = mirroring_display_list[index]; |
| 89 if (current_cursor_display_id_ != new_display.id()) { | 89 if (current_cursor_display_id_ != new_display.id()) { |
| 90 cursor_client->SetDisplay(new_display); | 90 cursor_client->SetDisplay(new_display); |
| 91 current_cursor_display_id_ = display::Display::kInvalidDisplayID; | 91 current_cursor_display_id_ = display::Display::kInvalidDisplayID; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 115 | 115 |
| 116 return WarpMouseCursorInNativeCoords(point_in_native, point_in_unified_host, | 116 return WarpMouseCursorInNativeCoords(point_in_native, point_in_unified_host, |
| 117 update_location_for_test_); | 117 update_location_for_test_); |
| 118 } | 118 } |
| 119 | 119 |
| 120 void UnifiedMouseWarpController::SetEnabled(bool enabled) { | 120 void UnifiedMouseWarpController::SetEnabled(bool enabled) { |
| 121 // Mouse warp shuld be always on in Unified mode. | 121 // Mouse warp shuld be always on in Unified mode. |
| 122 } | 122 } |
| 123 | 123 |
| 124 void UnifiedMouseWarpController::ComputeBounds() { | 124 void UnifiedMouseWarpController::ComputeBounds() { |
| 125 display::DisplayList display_list = Shell::GetInstance() | 125 display::Displays display_list = Shell::GetInstance() |
| 126 ->display_manager() | 126 ->display_manager() |
| 127 ->software_mirroring_display_list(); | 127 ->software_mirroring_display_list(); |
| 128 | 128 |
| 129 if (display_list.size() < 2) { | 129 if (display_list.size() < 2) { |
| 130 LOG(ERROR) << "Mirroring Display lost during re-configuration"; | 130 LOG(ERROR) << "Mirroring Display lost during re-configuration"; |
| 131 return; | 131 return; |
| 132 } | 132 } |
| 133 LOG_IF(ERROR, display_list.size() > 2) << "Only two displays are supported"; | 133 LOG_IF(ERROR, display_list.size() > 2) << "Only two displays are supported"; |
| 134 | 134 |
| 135 const display::Display& first = display_list[0]; | 135 const display::Display& first = display_list[0]; |
| 136 const display::Display& second = display_list[1]; | 136 const display::Display& second = display_list[1]; |
| 137 bool success = | 137 bool success = |
| (...skipping 11 matching lines...) Expand all Loading... |
| 149 } | 149 } |
| 150 | 150 |
| 151 bool UnifiedMouseWarpController::WarpMouseCursorInNativeCoords( | 151 bool UnifiedMouseWarpController::WarpMouseCursorInNativeCoords( |
| 152 const gfx::Point& point_in_native, | 152 const gfx::Point& point_in_native, |
| 153 const gfx::Point& point_in_unified_host, | 153 const gfx::Point& point_in_unified_host, |
| 154 bool update_mouse_location_now) { | 154 bool update_mouse_location_now) { |
| 155 bool in_first_edge = first_edge_bounds_in_native_.Contains(point_in_native); | 155 bool in_first_edge = first_edge_bounds_in_native_.Contains(point_in_native); |
| 156 bool in_second_edge = second_edge_bounds_in_native_.Contains(point_in_native); | 156 bool in_second_edge = second_edge_bounds_in_native_.Contains(point_in_native); |
| 157 if (!in_first_edge && !in_second_edge) | 157 if (!in_first_edge && !in_second_edge) |
| 158 return false; | 158 return false; |
| 159 display::DisplayList display_list = Shell::GetInstance() | 159 display::Displays display_list = Shell::GetInstance() |
| 160 ->display_manager() | 160 ->display_manager() |
| 161 ->software_mirroring_display_list(); | 161 ->software_mirroring_display_list(); |
| 162 // Wait updating the cursor until the cursor moves to the new display | 162 // Wait updating the cursor until the cursor moves to the new display |
| 163 // to avoid showing the wrong sized cursor at the source display. | 163 // to avoid showing the wrong sized cursor at the source display. |
| 164 current_cursor_display_id_ = | 164 current_cursor_display_id_ = |
| 165 in_first_edge ? display_list[0].id() : display_list[1].id(); | 165 in_first_edge ? display_list[0].id() : display_list[1].id(); |
| 166 AshWindowTreeHost* target_ash_host = | 166 AshWindowTreeHost* target_ash_host = |
| 167 GetMirroringAshWindowTreeHostForDisplayId( | 167 GetMirroringAshWindowTreeHostForDisplayId( |
| 168 in_first_edge ? display_list[1].id() : display_list[0].id()); | 168 in_first_edge ? display_list[1].id() : display_list[0].id()); |
| 169 MoveCursorTo(target_ash_host, point_in_unified_host, | 169 MoveCursorTo(target_ash_host, point_in_unified_host, |
| 170 update_mouse_location_now); | 170 update_mouse_location_now); |
| 171 return true; | 171 return true; |
| 172 } | 172 } |
| 173 | 173 |
| 174 } // namespace ash | 174 } // namespace ash |
| OLD | NEW |