| Index: ash/display/mouse_cursor_event_filter.cc
|
| diff --git a/ash/display/mouse_cursor_event_filter.cc b/ash/display/mouse_cursor_event_filter.cc
|
| index 9b6d2973cde40375253e5cd909298ce5305d84bc..c103f087c5e30c5701f4c563ea465e845ac1af82 100644
|
| --- a/ash/display/mouse_cursor_event_filter.cc
|
| +++ b/ash/display/mouse_cursor_event_filter.cc
|
| @@ -31,9 +31,14 @@ bool MouseCursorEventFilter::PreHandleKeyEvent(aura::Window* target,
|
|
|
| bool MouseCursorEventFilter::PreHandleMouseEvent(aura::Window* target,
|
| aura::MouseEvent* event) {
|
| - if (event->type() != ui::ET_MOUSE_MOVED ||
|
| - ash::Shell::GetInstance()->cursor_manager()->is_cursor_locked())
|
| - return false;
|
| + // Handle both MOVED and DRAGGED events here because when the mouse pointer
|
| + // enters the other root window while dragging, the underlying window system
|
| + // (at least X11) stops generating a ui::ET_MOUSE_MOVED event.
|
| + if (event->type() != ui::ET_MOUSE_MOVED &&
|
| + event->type() != ui::ET_MOUSE_DRAGGED) {
|
| + return false;
|
| + }
|
| +
|
| aura::RootWindow* current_root = target->GetRootWindow();
|
| gfx::Point location_in_root(event->location());
|
| aura::Window::ConvertPointToWindow(target, current_root, &location_in_root);
|
|
|