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

Unified Diff: ash/display/mouse_cursor_event_filter_ozone.cc

Issue 575143002: Reland of: Remove deprecated cursor event filter for Ozone (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 3 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
« no previous file with comments | « ash/display/mouse_cursor_event_filter.cc ('k') | ash/display/mouse_cursor_event_filter_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/display/mouse_cursor_event_filter_ozone.cc
diff --git a/ash/display/mouse_cursor_event_filter_ozone.cc b/ash/display/mouse_cursor_event_filter_ozone.cc
deleted file mode 100644
index 8c0487156bc2fbe677a3716de619d04900266737..0000000000000000000000000000000000000000
--- a/ash/display/mouse_cursor_event_filter_ozone.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/display/mouse_cursor_event_filter.h"
-
-#include "ash/shell.h"
-#include "ash/wm/coordinate_conversion.h"
-#include "ash/wm/window_util.h"
-#include "ui/wm/core/coordinate_conversion.h"
-
-namespace ash {
-
-void MouseCursorEventFilter::OnDisplayConfigurationChanged() {
- src_edge_bounds_in_native_.SetRect(0, 0, 0, 0);
- dst_edge_bounds_in_native_.SetRect(0, 0, 0, 0);
-}
-
-bool MouseCursorEventFilter::WarpMouseCursorIfNecessary(ui::MouseEvent* event) {
- if (event->flags() & ui::EF_IS_SYNTHESIZED)
- return false;
-
- gfx::Point point_in_screen(event->location());
- aura::Window* target = static_cast<aura::Window*>(event->target());
- ::wm::ConvertPointToScreen(target, &point_in_screen);
- return WarpMouseCursorInScreenCoords(target->GetRootWindow(),
- point_in_screen);
-}
-
-bool MouseCursorEventFilter::WarpMouseCursorInScreenCoords(
- aura::Window* target_root,
- const gfx::Point& point_in_screen) {
- if (Shell::GetScreen()->GetNumDisplays() <= 1 ||
- mouse_warp_mode_ == WARP_NONE)
- return false;
-
- // Do not warp again right after the cursor was warped. Sometimes the offset
- // is not long enough and the cursor moves at the edge of the destination
- // display. See crbug.com/278885
- // TODO(mukai): simplify the offset calculation below, it would not be
- // necessary anymore with this flag.
- if (was_mouse_warped_) {
- was_mouse_warped_ = false;
- return false;
- }
-
- aura::Window* root_at_point = wm::GetRootWindowAt(point_in_screen);
- gfx::Point point_in_root = point_in_screen;
- ::wm::ConvertPointFromScreen(root_at_point, &point_in_root);
- gfx::Rect root_bounds = root_at_point->bounds();
- int offset_x = 0;
- int offset_y = 0;
-
- // If the window is dragged between 2x display and 1x display,
- // staring from 2x display, pointer location is rounded by the
- // source scale factor (2x) so it will never reach the edge (which
- // is odd). Shrink by scale factor of the display where the dragging
- // started instead. Only integral scale factor is supported for now.
- int shrink = scale_when_drag_started_;
- // Make the bounds inclusive to detect the edge.
- root_bounds.Inset(0, 0, shrink, shrink);
- gfx::Rect src_indicator_bounds = src_indicator_bounds_;
- src_indicator_bounds.Inset(-shrink, -shrink, -shrink, -shrink);
-
- if (point_in_root.x() <= root_bounds.x()) {
- // Use -2, not -1, to avoid infinite loop of pointer warp.
- offset_x = -2 * scale_when_drag_started_;
- } else if (point_in_root.x() >= root_bounds.right()) {
- offset_x = 2 * scale_when_drag_started_;
- } else if (point_in_root.y() <= root_bounds.y()) {
- offset_y = -2 * scale_when_drag_started_;
- } else if (point_in_root.y() >= root_bounds.bottom()) {
- offset_y = 2 * scale_when_drag_started_;
- } else {
- return false;
- }
-
- gfx::Point point_in_dst_screen(point_in_screen);
- point_in_dst_screen.Offset(offset_x, offset_y);
- aura::Window* dst_root = wm::GetRootWindowAt(point_in_dst_screen);
-
- // Warp the mouse cursor only if the location is in the indicator bounds
- // or the mouse pointer is in the destination root.
- if (mouse_warp_mode_ == WARP_DRAG &&
- dst_root != drag_source_root_ &&
- !src_indicator_bounds.Contains(point_in_screen)) {
- return false;
- }
-
- ::wm::ConvertPointFromScreen(dst_root, &point_in_dst_screen);
-
- if (dst_root->bounds().Contains(point_in_dst_screen)) {
- DCHECK_NE(dst_root, root_at_point);
- was_mouse_warped_ = true;
- dst_root->MoveCursorTo(point_in_dst_screen);
- return true;
- }
- return false;
-}
-
-bool MouseCursorEventFilter::WarpMouseCursorIfNecessaryForTest(
- aura::Window* target_root,
- const gfx::Point& point_in_screen) {
- return WarpMouseCursorInScreenCoords(target_root, point_in_screen);
-}
-
-} // namespac
« no previous file with comments | « ash/display/mouse_cursor_event_filter.cc ('k') | ash/display/mouse_cursor_event_filter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698