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

Unified 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: Rename UpdateDisplaysTo to UpdateDisplaysWith 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 side-by-side diff with in-line comments
Download patch
Index: ash/display/extended_mouse_warp_controller.cc
diff --git a/ash/display/extended_mouse_warp_controller.cc b/ash/display/extended_mouse_warp_controller.cc
index 8d044637b91f67dcbd7fd421bff48944cbe86f6e..f17444bd63b5f4e86b694433b874e68ddec61c62 100644
--- a/ash/display/extended_mouse_warp_controller.cc
+++ b/ash/display/extended_mouse_warp_controller.cc
@@ -52,11 +52,11 @@ ExtendedMouseWarpController::WarpRegion::WarpRegion(
int64_t b_display_id,
const gfx::Rect& a_indicator_bounds,
const gfx::Rect& b_indicator_bounds)
- : a_display_id(a_display_id),
- b_display_id(b_display_id),
- a_indicator_bounds(a_indicator_bounds),
- b_indicator_bounds(b_indicator_bounds),
- shared_display_edge_indicator(nullptr) {
+ : a_display_id_(a_display_id),
+ b_display_id_(b_display_id),
+ a_indicator_bounds_(a_indicator_bounds),
+ b_indicator_bounds_(b_indicator_bounds),
+ shared_display_edge_indicator_(nullptr) {
// Initialize edge bounds from indicator bounds.
aura::Window* a_window = GetRootWindowForDisplayId(a_display_id);
aura::Window* b_window = GetRootWindowForDisplayId(b_display_id);
@@ -64,8 +64,10 @@ ExtendedMouseWarpController::WarpRegion::WarpRegion(
AshWindowTreeHost* a_ash_host = GetRootWindowController(a_window)->ash_host();
AshWindowTreeHost* b_ash_host = GetRootWindowController(b_window)->ash_host();
- a_edge_bounds_in_native = GetNativeEdgeBounds(a_ash_host, a_indicator_bounds);
- b_edge_bounds_in_native = GetNativeEdgeBounds(b_ash_host, b_indicator_bounds);
+ a_edge_bounds_in_native_ =
+ GetNativeEdgeBounds(a_ash_host, a_indicator_bounds);
+ b_edge_bounds_in_native_ =
+ GetNativeEdgeBounds(b_ash_host, b_indicator_bounds);
}
ExtendedMouseWarpController::WarpRegion::~WarpRegion() {}
@@ -88,18 +90,21 @@ ExtendedMouseWarpController::ExtendedMouseWarpController(
drag_source != nullptr);
}
} else {
+ // Make sure to set |a| as the primary display, and |b| as the secondary
+ // display. DisplayLayout::Position is defined in terms of primary.
DisplayLayout::Position position =
display_manager->GetCurrentDisplayLayout().position;
- const gfx::Display& a = display_manager->GetDisplayAt(0);
- const gfx::Display& b = display_manager->GetDisplayAt(1);
+ const gfx::Display& a = Shell::GetScreen()->GetPrimaryDisplay();
+ const gfx::Display& b = ScreenUtil::GetSecondaryDisplay();
// TODO(oshima): Use ComputeBondary instead.
- if (position == DisplayLayout::TOP || position == DisplayLayout::BOTTOM)
+ if (position == DisplayLayout::TOP || position == DisplayLayout::BOTTOM) {
AddWarpRegion(CreateHorizontalEdgeBounds(a, b, position),
drag_source != nullptr);
- else
+ } else {
AddWarpRegion(CreateVerticalEdgeBounds(a, b, position),
drag_source != nullptr);
+ }
}
}
@@ -148,12 +153,12 @@ void ExtendedMouseWarpController::SetEnabled(bool enabled) {
void ExtendedMouseWarpController::AddWarpRegion(
scoped_ptr<WarpRegion> warp_region,
- bool drag_source) {
- if (drag_source) {
- warp_region->shared_display_edge_indicator.reset(
+ bool has_drag_source) {
+ if (has_drag_source) {
+ warp_region->shared_display_edge_indicator_.reset(
new SharedDisplayEdgeIndicator);
- warp_region->shared_display_edge_indicator->Show(
- warp_region->a_indicator_bounds, warp_region->b_indicator_bounds);
+ warp_region->shared_display_edge_indicator_->Show(
+ warp_region->a_indicator_bounds_, warp_region->b_indicator_bounds_);
}
warp_regions_.emplace_back(std::move(warp_region));
@@ -164,14 +169,14 @@ bool ExtendedMouseWarpController::WarpMouseCursorInNativeCoords(
const gfx::Point& point_in_screen,
bool update_mouse_location_now) {
for (const scoped_ptr<WarpRegion>& warp : warp_regions_) {
- bool in_a_edge = warp->a_edge_bounds_in_native.Contains(point_in_native);
- bool in_b_edge = warp->b_edge_bounds_in_native.Contains(point_in_native);
+ bool in_a_edge = warp->a_edge_bounds_in_native_.Contains(point_in_native);
+ bool in_b_edge = warp->b_edge_bounds_in_native_.Contains(point_in_native);
if (!in_a_edge && !in_b_edge)
continue;
// The mouse must move.
aura::Window* dst_window = GetRootWindowForDisplayId(
- in_a_edge ? warp->b_display_id : warp->a_display_id);
+ in_a_edge ? warp->b_display_id_ : warp->a_display_id_);
AshWindowTreeHost* target_ash_host =
GetRootWindowController(dst_window)->ash_host();
« no previous file with comments | « ash/display/extended_mouse_warp_controller.h ('k') | ash/display/extended_mouse_warp_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698