From 30860f7b1075d04b861e38cac72a6b1a2c951f6e Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 11 Mar 2015 11:52:13 +0100 Subject: [PATCH] x11: ignore mouse enter/leave events due to pointer grab If you click on a window that doesn't have a focus, a LeaveNotify followed by a EnterNotify event can be generated. The former will have mode set to NotifyGrab, the latter to NotifyUngrab. This will make the player think the mouse left the window, even though this is not the case. Ignore these and only react to those with mode set to NotifyNormal. Probably fixes #1672, and some other strange issues on some WMs. --- video/out/x11_common.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/video/out/x11_common.c b/video/out/x11_common.c index 2fef802ae8..caeab3a5a6 100644 --- a/video/out/x11_common.c +++ b/video/out/x11_common.c @@ -931,10 +931,14 @@ int vo_x11_check_events(struct vo *vo) x11->win_drag_button1_down = false; break; case LeaveNotify: + if (Event.xcrossing.mode != NotifyNormal) + break; x11->win_drag_button1_down = false; mp_input_put_key(vo->input_ctx, MP_KEY_MOUSE_LEAVE); break; case EnterNotify: + if (Event.xcrossing.mode != NotifyNormal) + break; mp_input_put_key(vo->input_ctx, MP_KEY_MOUSE_ENTER); break; case ButtonPress: