wine/dlls/winex11.drv
Arkadiusz Hiler 2bfe81e41f winex11.drv: Send missed KEYUP events on KeymapNotify.
Full focus lost / focus gained events on the Windows side are not
feasible for X11's FocusIn/FocusOut events generated by keyboard grabs
(see XGrabKeyboard()) that are used for example for Atl+Tab handling.
Using them would degrade user's experience by causing the window to
minimize or flash multiple times depending on a game/window manager
combo.

Because of that the programs may miss on some KEYUP events that happen
during the grab, and since there are no focus changes on the Windows
side the state doesn't get resynced.

This change attempts to improve user experience by syncing any missed
key release events that happened while the window haven't had focus on
the X11 side.

There's no syncing of key presses as those are more problematic because
of window manager quirks, e.g. on KDE it may end up syncing the Tab
press portion of Alt+Tab. Luckily missing key events for keys that were
pressed and not released while the WM had the keyboard grab is not
nearly as confusing as stuck keys.

For Warhammer: Chaosbane, theHunter: Call of the Wild, Far Cry Primal
and many other games that end up with stuck Alt after Alt+Tabbing.
2023-10-18 20:47:00 +02:00
..
bitblt.c
brush.c
clipboard.c winex11: Work around a false positive gcc warning. 2023-08-21 12:12:10 +02:00
desktop.c
display.c winex11: Avoid querying GPU properties in get_host_primary_monitor_rect. 2023-08-30 19:22:09 +02:00
dllmain.c
event.c winex11.drv: Send missed KEYUP events on KeymapNotify. 2023-10-18 20:47:00 +02:00
graphics.c
init.c
keyboard.c winex11.drv: Send missed KEYUP events on KeymapNotify. 2023-10-18 20:47:00 +02:00
Makefile.in
mouse.c winex11.drv: Send missed KEYUP events on KeymapNotify. 2023-10-18 20:47:00 +02:00
mwm.h
opengl.c winex11.drv: Mark drawable as dirty when setting pixel format. 2023-08-22 10:37:10 +02:00
palette.c
pen.c
systray.c
unixlib.h
version.rc
vulkan.c
window.c winex11.drv: Set _NET_WM_FULLSCREEN_MONITORS only when necessary. 2023-10-11 20:29:49 +02:00
winex11.drv.spec
wintab.c
x11drv.h winex11.drv: Send missed KEYUP events on KeymapNotify. 2023-10-18 20:47:00 +02:00
x11drv_dll.h
x11drv_main.c win32u: Use the correct length for kernel object names in object attributes. 2023-09-12 10:00:24 +02:00
xcomposite.h
xdnd.c
xim.c
xinerama.c winex11: Avoid querying GPU properties in get_host_primary_monitor_rect. 2023-08-30 19:22:09 +02:00
xrandr.c winex11: Avoid querying GPU properties in get_host_primary_monitor_rect. 2023-08-30 19:22:09 +02:00
xrender.c
xvidmode.c