Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: ash/display/extended_mouse_warp_controller.cc

Issue 1631023002: Fix moving the mouse between two displays after the secondary display becomes primary. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 // horizontally, with each display being RIGHT of the previous one. 81 // horizontally, with each display being RIGHT of the previous one.
82 if (display_manager->GetNumDisplays() > 2) { 82 if (display_manager->GetNumDisplays() > 2) {
83 for (size_t i = 1; i < display_manager->GetNumDisplays(); ++i) { 83 for (size_t i = 1; i < display_manager->GetNumDisplays(); ++i) {
84 const gfx::Display& left = display_manager->GetDisplayAt(i - 1); 84 const gfx::Display& left = display_manager->GetDisplayAt(i - 1);
85 const gfx::Display& right = display_manager->GetDisplayAt(i); 85 const gfx::Display& right = display_manager->GetDisplayAt(i);
86 86
87 AddWarpRegion(CreateVerticalEdgeBounds(left, right, DisplayLayout::RIGHT), 87 AddWarpRegion(CreateVerticalEdgeBounds(left, right, DisplayLayout::RIGHT),
88 drag_source != nullptr); 88 drag_source != nullptr);
89 } 89 }
90 } else { 90 } else {
91 // Make sure to set |a| as the primary display, and |b| as the secondary
92 // display. DisplayLayout::Position is defined in terms of primary.
91 DisplayLayout::Position position = 93 DisplayLayout::Position position =
92 display_manager->GetCurrentDisplayLayout().position; 94 display_manager->GetCurrentDisplayLayout().position;
93 const gfx::Display& a = display_manager->GetDisplayAt(0); 95 const gfx::Display& a = Shell::GetScreen()->GetPrimaryDisplay();
94 const gfx::Display& b = display_manager->GetDisplayAt(1); 96 const gfx::Display& b = ScreenUtil::GetSecondaryDisplay();
95 97
96 // TODO(oshima): Use ComputeBondary instead. 98 // TODO(oshima): Use ComputeBondary instead.
97 if (position == DisplayLayout::TOP || position == DisplayLayout::BOTTOM) 99 if (position == DisplayLayout::TOP || position == DisplayLayout::BOTTOM) {
98 AddWarpRegion(CreateHorizontalEdgeBounds(a, b, position), 100 AddWarpRegion(CreateHorizontalEdgeBounds(a, b, position),
99 drag_source != nullptr); 101 drag_source != nullptr);
100 else 102 } else {
101 AddWarpRegion(CreateVerticalEdgeBounds(a, b, position), 103 AddWarpRegion(CreateVerticalEdgeBounds(a, b, position),
102 drag_source != nullptr); 104 drag_source != nullptr);
105 }
103 } 106 }
104 } 107 }
105 108
106 ExtendedMouseWarpController::~ExtendedMouseWarpController() { 109 ExtendedMouseWarpController::~ExtendedMouseWarpController() {
107 } 110 }
108 111
109 bool ExtendedMouseWarpController::WarpMouseCursor(ui::MouseEvent* event) { 112 bool ExtendedMouseWarpController::WarpMouseCursor(ui::MouseEvent* event) {
110 if (Shell::GetScreen()->GetNumDisplays() <= 1 || !enabled_) 113 if (Shell::GetScreen()->GetNumDisplays() <= 1 || !enabled_)
111 return false; 114 return false;
112 115
(...skipping 28 matching lines...) Expand all
141 144
142 return WarpMouseCursorInNativeCoords(point_in_native, point_in_screen, false); 145 return WarpMouseCursorInNativeCoords(point_in_native, point_in_screen, false);
143 } 146 }
144 147
145 void ExtendedMouseWarpController::SetEnabled(bool enabled) { 148 void ExtendedMouseWarpController::SetEnabled(bool enabled) {
146 enabled_ = enabled; 149 enabled_ = enabled;
147 } 150 }
148 151
149 void ExtendedMouseWarpController::AddWarpRegion( 152 void ExtendedMouseWarpController::AddWarpRegion(
150 scoped_ptr<WarpRegion> warp_region, 153 scoped_ptr<WarpRegion> warp_region,
151 bool drag_source) { 154 bool has_drag_source) {
152 if (drag_source) { 155 if (has_drag_source) {
153 warp_region->shared_display_edge_indicator.reset( 156 warp_region->shared_display_edge_indicator.reset(
154 new SharedDisplayEdgeIndicator); 157 new SharedDisplayEdgeIndicator);
155 warp_region->shared_display_edge_indicator->Show( 158 warp_region->shared_display_edge_indicator->Show(
156 warp_region->a_indicator_bounds, warp_region->b_indicator_bounds); 159 warp_region->a_indicator_bounds, warp_region->b_indicator_bounds);
157 } 160 }
158 161
159 warp_regions_.emplace_back(std::move(warp_region)); 162 warp_regions_.emplace_back(std::move(warp_region));
160 } 163 }
161 164
162 bool ExtendedMouseWarpController::WarpMouseCursorInNativeCoords( 165 bool ExtendedMouseWarpController::WarpMouseCursorInNativeCoords(
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 upper_indicator_y = std::max(upper_indicator_y, upper_shared_y); 268 upper_indicator_y = std::max(upper_indicator_y, upper_shared_y);
266 } 269 }
267 a_indicator_bounds.set_y(upper_indicator_y); 270 a_indicator_bounds.set_y(upper_indicator_y);
268 a_indicator_bounds.set_height(lower_indicator_y - upper_indicator_y); 271 a_indicator_bounds.set_height(lower_indicator_y - upper_indicator_y);
269 272
270 return make_scoped_ptr( 273 return make_scoped_ptr(
271 new WarpRegion(a.id(), b.id(), a_indicator_bounds, b_indicator_bounds)); 274 new WarpRegion(a.id(), b.id(), a_indicator_bounds, b_indicator_bounds));
272 } 275 }
273 276
274 } // namespace ash 277 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698