We use the window vs visible rect differences to compute the new window rect from its visible rect changes in window_update_client_config.
When a window gets restored the win32 minimized rect differences won't match the restored rect differences and the computation is wrong if we do it on the minimized rects, as it need to happen before the actual SC_RESTORE command it sent.
The minimized rects shouldn't matter as we use minimized style directly, and they also cause trouble with empty client areas, so better ignore them.
From: Rémi Bernon rbernon@codeweavers.com
We use the window vs visible rect differences to compute the new window rect from its visible rect changes in window_update_client_config.
When a window gets restored the win32 minimized rect differences won't match the restored rect differences and the computation is wrong if we do it on the minimized rects, as it need to happen before the actual SC_RESTORE command it sent.
The minimized rects shouldn't matter as we use minimized style directly, and they also cause trouble with empty client areas, so better ignore them.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58852 --- dlls/winex11.drv/window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index a042ac9bc52..5ca87054041 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -3129,7 +3129,7 @@ void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, HWND owner_hint, UIN
old_rects = data->rects; was_fullscreen = data->is_fullscreen; - data->rects = *new_rects; + if (!(new_style & WS_MINIMIZE)) data->rects = *new_rects; data->is_fullscreen = fullscreen;
TRACE( "win %p/%lx new_rects %s style %08x flags %08x\n", hwnd, data->whole_window,