diff options
author | wm4 <wm4@nowhere> | 2015-03-11 11:52:13 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-03-11 11:52:33 +0100 |
commit | 30860f7b1075d04b861e38cac72a6b1a2c951f6e (patch) | |
tree | 569b81cccf0d9fa99d91923e69c3d35ad7a5f2a3 /video | |
parent | ca0b33e9b1c5fb3bc12684c53bc2a1a22701a39d (diff) | |
download | mpv-30860f7b1075d04b861e38cac72a6b1a2c951f6e.tar.bz2 mpv-30860f7b1075d04b861e38cac72a6b1a2c951f6e.tar.xz |
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.
Diffstat (limited to 'video')
-rw-r--r-- | video/out/x11_common.c | 4 |
1 files changed, 4 insertions, 0 deletions
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: |