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/extended_mouse_warp_controller.h" | 5 #include "ash/display/extended_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 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 ExtendedMouseWarpController::WarpRegion::GetIndicatorBoundsForTest( | 92 ExtendedMouseWarpController::WarpRegion::GetIndicatorBoundsForTest( |
93 int64_t id) const { | 93 int64_t id) const { |
94 if (a_display_id_ == id) | 94 if (a_display_id_ == id) |
95 return a_indicator_bounds_; | 95 return a_indicator_bounds_; |
96 CHECK_EQ(b_display_id_, id); | 96 CHECK_EQ(b_display_id_, id); |
97 return b_indicator_bounds_; | 97 return b_indicator_bounds_; |
98 } | 98 } |
99 | 99 |
100 ExtendedMouseWarpController::ExtendedMouseWarpController( | 100 ExtendedMouseWarpController::ExtendedMouseWarpController( |
101 aura::Window* drag_source) | 101 aura::Window* drag_source) |
102 : drag_source_root_(drag_source), | 102 : drag_source_root_(drag_source), allow_non_native_event_(false) { |
103 allow_non_native_event_(false) { | |
104 ash::DisplayManager* display_manager = | 103 ash::DisplayManager* display_manager = |
105 Shell::GetInstance()->display_manager(); | 104 Shell::GetInstance()->display_manager(); |
106 int64_t drag_source_id = drag_source ? GetDisplayIdFromWindow(drag_source) | 105 int64_t drag_source_id = drag_source ? GetDisplayIdFromWindow(drag_source) |
107 : display::Display::kInvalidDisplayID; | 106 : display::Display::kInvalidDisplayID; |
108 display::DisplayList display_list = display_manager->active_display_list(); | 107 display::DisplayList display_list = display_manager->active_display_list(); |
109 // Try to create a Warp region for all possible two displays combination. | 108 // Try to create a Warp region for all possible two displays combination. |
110 // The following code does it by poping the last element in the list | 109 // The following code does it by poping the last element in the list |
111 // and then pairing with remaining displays in the list, until the list | 110 // and then pairing with remaining displays in the list, until the list |
112 // becomes single element. | 111 // becomes single element. |
113 while (display_list.size() > 1) { | 112 while (display_list.size() > 1) { |
114 display::Display display = display_list.back(); | 113 display::Display display = display_list.back(); |
115 display_list.pop_back(); | 114 display_list.pop_back(); |
116 for (const display::Display& peer : display_list) { | 115 for (const display::Display& peer : display_list) { |
117 std::unique_ptr<WarpRegion> region = | 116 std::unique_ptr<WarpRegion> region = |
118 CreateWarpRegion(display, peer, drag_source_id); | 117 CreateWarpRegion(display, peer, drag_source_id); |
119 if (region) | 118 if (region) |
120 AddWarpRegion(std::move(region), drag_source != nullptr); | 119 AddWarpRegion(std::move(region), drag_source != nullptr); |
121 } | 120 } |
122 } | 121 } |
123 } | 122 } |
124 | 123 |
125 ExtendedMouseWarpController::~ExtendedMouseWarpController() { | 124 ExtendedMouseWarpController::~ExtendedMouseWarpController() {} |
126 } | |
127 | 125 |
128 bool ExtendedMouseWarpController::WarpMouseCursor(ui::MouseEvent* event) { | 126 bool ExtendedMouseWarpController::WarpMouseCursor(ui::MouseEvent* event) { |
129 if (display::Screen::GetScreen()->GetNumDisplays() <= 1 || !enabled_) | 127 if (display::Screen::GetScreen()->GetNumDisplays() <= 1 || !enabled_) |
130 return false; | 128 return false; |
131 | 129 |
132 aura::Window* target = static_cast<aura::Window*>(event->target()); | 130 aura::Window* target = static_cast<aura::Window*>(event->target()); |
133 gfx::Point point_in_screen = event->location(); | 131 gfx::Point point_in_screen = event->location(); |
134 ::wm::ConvertPointToScreen(target, &point_in_screen); | 132 ::wm::ConvertPointToScreen(target, &point_in_screen); |
135 | 133 |
136 // A native event may not exist in unit test. Generate the native point | 134 // A native event may not exist in unit test. Generate the native point |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 if (drag_source_id == a.id()) | 217 if (drag_source_id == a.id()) |
220 AdjustSourceEdgeBounds(a.bounds(), snap_barrier, &a_edge); | 218 AdjustSourceEdgeBounds(a.bounds(), snap_barrier, &a_edge); |
221 else if (drag_source_id == b.id()) | 219 else if (drag_source_id == b.id()) |
222 AdjustSourceEdgeBounds(b.bounds(), snap_barrier, &b_edge); | 220 AdjustSourceEdgeBounds(b.bounds(), snap_barrier, &b_edge); |
223 } | 221 } |
224 | 222 |
225 return base::WrapUnique(new WarpRegion(a.id(), b.id(), a_edge, b_edge)); | 223 return base::WrapUnique(new WarpRegion(a.id(), b.id(), a_edge, b_edge)); |
226 } | 224 } |
227 | 225 |
228 } // namespace ash | 226 } // namespace ash |
OLD | NEW |