This is a resend of several patches with some addtional ones. This should address cursor and focus related issues in winex11.drv.
Many games are grabbing and warping the cursor to keep it inside their window. There's apparently no way in Xlib to prevent XWarpPointer to succeed even if some other application have active grab on the pointer, so each application should behave. The first two patches should make Wine be nicer in this regard.
The focus issue is covered by the four other patches. As keyboard grab notifications are send as focus events, Wine sometimes loses tracks of the current focus state. Fixing this and using these notifications helps deciding whether it is safe or not to ask for a cursor grab / warp.
Rémi Bernon (6): winex11.drv: Do not set clipping_cursor when clip window is mapped winex11.drv: Only call XWarpPointer if we can get exclusive grab winex11.drv: Print the FocusIn/FocusOut mode in trace message winex11.drv: Do not react to keyboard grab focus events winex11.drv: Only grab or warp the cursor when keyboard isn't grabbed winex11.drv: Retry last ClipCursor when grab is released
dlls/winex11.drv/event.c | 57 ++++++++++++++++++++++++++++++++++++--- dlls/winex11.drv/mouse.c | 46 +++++++++++++++++++++++++++++++ dlls/winex11.drv/x11drv.h | 2 ++ 3 files changed, 102 insertions(+), 3 deletions(-)
-- 2.20.1