Rémi Bernon (@rbernon) commented about dlls/win32u/window.c:
return;
if (wnd->dwStyle & WS_MAXIMIZE) + { + if (!(wnd->dwStyle & WS_MINIMIZE)) { mon_info = monitor_info_from_window( wnd->obj.handle, MONITOR_DEFAULTTOPRIMARY ); - work_rect = &mon_info.rcWork; + work_rect = mon_info.rcWork; + }
- if (wnd->rects.window.left <= work_rect->left && wnd->rects.window.top <= work_rect->top && - wnd->rects.window.right >= work_rect->right && wnd->rects.window.bottom >= work_rect->bottom) + if (wnd->rects.window.left <= work_rect.left && wnd->rects.window.top <= work_rect.top && + wnd->rects.window.right >= work_rect.right && wnd->rects.window.bottom >= work_rect.bottom) wnd->max_pos.x = wnd->max_pos.y = -1;
This changes the logic and when window is both maximized and minimized, we may now set `max_pos.x = max_pos.y = -1`? It might be better to fix `monitor_info_from_window` instead and avoid calling `NtUserGetWindowPlacement` just to get the normal rect, maybe with a dedicated helper. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7708#note_100106