Zhiyi Zhang (@zhiyi) commented about dlls/win32u/defwnd.c:
case WM_NCCALCSIZE: return 0; case WM_DISPLAYCHANGE:
return user_driver->pDesktopWindowProc( hwnd, msg, wparam, lparam );
- {
static RECT old_rect;
RECT new_rect = NtUserGetVirtualScreenRect();
TRACE( "desktop %p change from %s to %s\n", hwnd, wine_dbgstr_rect( &old_rect ), wine_dbgstr_rect( &new_rect ) );
if (old_rect.left == new_rect.left && old_rect.top == new_rect.top) return TRUE;
If there is only one monitor and I change the monitor from 4k to 1080p, the left and top of the virtual screen rectangle remain (0, 0). So I think you need to also check for size changes here.