Tidy Cauldron (2708320), a Unity game, uses EnumWindows() to find the first window in the current
thread and maximizes the window when changing to windowed mode. However, before this patch, the IME
UI window and the DXGI fallback device window are on top of the game window at creation and thus
they could get maximized instead. This causes the game window to lose focus and freeze.
--
v2: dxgi: Move the fallback device window to the bottom at creation.
d3d11/tests: Test that the fallback device window shouldn't be above normal windows at creation.
imm32: Move the IME UI window to the bottom at creation.
imm32/tests: Test that the IME UI window shouldn't be above normal windows at creation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7381
On Tue Feb 4 14:36:04 2025 +0000, Jacek Caban wrote:
> I think it's because we register it in a wrong way, see
> `HKEY_CLASSES_ROOT\CLSID\{9BA05972-F6A8-11CF-A442-00A0C90A8F39}`. On
> Wine, it contains `InprocServer32` key, while on Windows it uses
> `LocalServer32`. We should probably remove `threading()` attribute from
> `ShellWindows` coclass in `exdisp.idl` and have `.rgs` file in shell
> registering it manually.
Interesting. I'll try using the values from Windows and seeing what it does.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7221#note_95821