| Index: ui/events/blink/web_input_event.cc
|
| diff --git a/ui/events/blink/web_input_event.cc b/ui/events/blink/web_input_event.cc
|
| index 7b912ae026c85c853fb7fe7316c32acd458d90a5..f5ac5812a40a9e02bba7dea45aa76f019ff02eb9 100644
|
| --- a/ui/events/blink/web_input_event.cc
|
| +++ b/ui/events/blink/web_input_event.cc
|
| @@ -16,6 +16,10 @@
|
| #include "ui/events/blink/web_input_event_builders_win.h"
|
| #endif
|
|
|
| +#if defined(USE_X11)
|
| +#include <X11/Xlib.h>
|
| +#endif
|
| +
|
| namespace ui {
|
|
|
| namespace {
|
| @@ -388,6 +392,18 @@ blink::WebMouseEvent MakeWebMouseEventFromUiEvent(const MouseEvent& event) {
|
| click_count = event.GetClickCount();
|
| break;
|
| case ET_MOUSE_EXITED: {
|
| +#if defined(USE_X11)
|
| + // NotifyVirtual events are created for intermediate windows that the
|
| + // pointer crosses through. These occur when middle clicking.
|
| + // Change these into mouse move events.
|
| + const base::NativeEvent& native_event = event.native_event();
|
| +
|
| + if (native_event && native_event->type == LeaveNotify &&
|
| + native_event->xcrossing.detail == NotifyVirtual) {
|
| + type = blink::WebInputEvent::MouseMove;
|
| + break;
|
| + }
|
| +#endif
|
| static bool s_send_leave =
|
| base::FeatureList::IsEnabled(features::kSendMouseLeaveEvents);
|
| type = s_send_leave ? blink::WebInputEvent::MouseLeave
|
|
|