Yet another attempt at making things better.
This uses a simpler delaying method than the previous implementations, by resending delayed FocusIn/WM_TAKE_FOCUS events to the window so it reprocesses it a bit later and retry grabbing the pointer until it succeeds.
Rémi Bernon (8): Revert "winex11.drv: Retry last ClipCursor when grab is released." Revert "winex11.drv: Only grab or warp the cursor when keyboard isn't grabbed." winex11.drv: Merge FocusIn/FocusOut NotifyGrab/NotifyUngrab cases. winex11.drv: Pass XEvent instead of XClientMessageEvent to handlers. winex11.drv: Wait for pointer grab on FocusIn/WM_TAKE_FOCUS events. winex11.drv: Release pointer grab on focus change. winex11.drv: Release pointer grab on FocusOut events. winex11.drv: Restore pointer grab on FocusIn events.
dlls/winex11.drv/event.c | 118 ++++++++++++++++++++------------------ dlls/winex11.drv/mouse.c | 36 ------------ dlls/winex11.drv/window.c | 3 + dlls/winex11.drv/x11drv.h | 13 ++--- dlls/winex11.drv/xdnd.c | 11 ++-- 5 files changed, 78 insertions(+), 103 deletions(-)
-- 2.23.0