The child window is moved within its parent surface, the old / new visible rects have moved with the child, but the surface did not and valid rects are correctly positionned already.
Fixes: 602040c58cecb778972c2ade6efabaf3b9f963ff Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57334
From: Rémi Bernon rbernon@codeweavers.com
The child window is moved within its parent surface, the old / new visible rects have moved with the child, but the surface did not and valid rects are correctly positionned already.
Fixes: 602040c58cecb778972c2ade6efabaf3b9f963ff Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57334 --- dlls/win32u/window.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index e3b0b3499e5..48a7304b6b0 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -2132,7 +2132,8 @@ static BOOL apply_window_pos( HWND hwnd, HWND insert_after, UINT swp_flags, stru user_driver->pMoveWindowBits( hwnd, &old_rects, new_rects, valid_rects ); else { - OffsetRect( &rects[1], new_rects->visible.left - old_rects.visible.left, new_rects->visible.top - old_rects.visible.top ); + /* move a child window bits within its parent window surface, the surface itself + * didn't move and valid rects are already relative to the surface rect. */ move_window_bits( hwnd, new_rects, valid_rects ); } }