diff --git a/reactos/subsystems/win32/win32k/ntuser/winpos.c b/reactos/subsystems/win32/win32k/ntuser/winpos.c index 1eba7c324b1..c4cebef68d4 100644 --- a/reactos/subsystems/win32/win32k/ntuser/winpos.c +++ b/reactos/subsystems/win32/win32k/ntuser/winpos.c @@ -1223,11 +1223,20 @@ co_WinPosSetWindowPos( } if (RgnType != ERROR && RgnType != NULLREGION) { + PWINDOW_OBJECT Parent = Window->Parent; NtGdiOffsetRgn(DirtyRgn, Window->WindowRect.left, Window->WindowRect.top); + if ((Window->Style & WS_CHILD) && + (Parent) && + !(Parent->Style & WS_CLIPCHILDREN)) + { + IntInvalidateWindows(Parent, DirtyRgn, + RDW_ERASE | RDW_INVALIDATE); + co_IntPaintWindows(Parent, RDW_ERASENOW, FALSE); + } IntInvalidateWindows(Window, DirtyRgn, - RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN); + RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN); } NtGdiDeleteObject(DirtyRgn); }