This completely refactors the winex11 window state tracking, keeping track of the desired/pending/current window state and config in a fully asynchronous way, and avoiding duplicate requests. I believe this mitigates various race conditions that we're suffering from, solving most spurious event feedback loops when the X11 state is being applied while some win32 state change is being requested, and fixing the spurious d3d/ddraw/user32 test failures.
--
v9: winex11: Request window state updates asynchronously.
winex11: Update the window client config on window state changes.
winex11: Wait for pending ConfigureNotify before updating the client state.
winex11: Wait for pending _NET_WM_STATE before updating the client state.
winex11: Don't expect WM_STATE events on override-redirect windows.
winex11: Listen to PropertyNotify events on the virtual desktop window.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6569
This completely refactors the winex11 window state tracking, keeping track of the desired/pending/current window state and config in a fully asynchronous way, and avoiding duplicate requests. I believe this mitigates various race conditions that we're suffering from, solving most spurious event feedback loops when the X11 state is being applied while some win32 state change is being requested, and fixing the spurious d3d/ddraw/user32 test failures.
--
v8: winex11: Request window state updates asynchronously.
winex11: Update the window client config on window state changes.
winex11: Wait for pending ConfigureNotify before updating the client state.
winex11: Wait for pending _NET_WM_STATE before updating the client state.
winex11: Don't expect WM_STATE events on override-redirect windows.
winex11: Listen to PropertyNotify events on the virtual desktop window.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6569
Fix the wayland side of https://bugs.winehq.org/show_bug.cgi?id=55336
### Exit menu key by default:
That's the actual behavior, any non-special key will exit the menu key, and be sent to the client.
I was also wondering if we should add `menu_sys_key = f10_key = 0;` when receiving a `WM_ACTIVATE` in `win32u/defwnd.c`'s `default_window_proc` but I guess not ?
### Fix repeated key for no reason:
For some reason when ALT is pressed, it is spammed and thus spams SYS_COMMAND. This fix that, but I don't know what I am doing here. I don't see any repeating key spamming with winex11 but I could be wrong. However alt/SYS_COMMAND should not be repeated.
That wasn't happening with winex11.drv.
### Fix release_all_keys modifier filtering:
That was the main reason why alt-tab leads to the menu key, NtUserGetAsyncKeyboardState also uses left and right system keys.
--
v4: winewayland.drv: Fix release_all_keys modifier filtering
server: Fix repeated key for no reason
win32u: Exit menu key by default
https://gitlab.winehq.org/wine/wine/-/merge_requests/6199