[PATCH] user32: Change the position and size of layered windows before flushing their surfaces.
When UpdateLayeredWindow() is called to paint a window and update its size, USER_Driver->pUpdateLayeredWindow() needs to be called after the window position and size are updated. Otherwise, UpdateLayeredWindow() may flush the painted content to a smaller window and then enlarge it, losing the painted result. Fix Word 2016 window frame corruption after restoring from maximized state. Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com> --- dlls/user32/win.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dlls/user32/win.c b/dlls/user32/win.c index e07b7d39e4b..4d0240f21a8 100644 --- a/dlls/user32/win.c +++ b/dlls/user32/win.c @@ -4134,10 +4134,8 @@ BOOL WINAPI UpdateLayeredWindowIndirect( HWND hwnd, const UPDATELAYEREDWINDOWINF TRACE( "window %p win %s client %s\n", hwnd, wine_dbgstr_rect(&window_rect), wine_dbgstr_rect(&client_rect) ); - if (!USER_Driver->pUpdateLayeredWindow( hwnd, info, &window_rect )) return FALSE; - set_window_pos( hwnd, 0, flags, &window_rect, &client_rect, NULL ); - return TRUE; + return USER_Driver->pUpdateLayeredWindow( hwnd, info, &window_rect ); } -- 2.32.0
Hi, While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=100476 Your paranoid android. === debiant2 (32 bit WoW report) === user32: input.c:2222: Test failed: GetRawInputData succeeded input.c:2223: Test failed: GetRawInputData returned deadbeef input.c:2341: Test failed: Spurious WM_INPUT messages
participants (2)
-
Marvin -
Zhiyi Zhang