From f1a7f30887ac02e9a6c6605d0409af2618771154 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 4 Jul 2007 22:22:30 +0000 Subject: [PATCH] co_WinPosSetWindowPos: fix the redrawing (instead of simply removing some code, like my last commit, sorry). Now it works more like on windows and both the problem of a blank control panel and ugly wizard pages are gone. Fixes bug 735, see also bug 902, may fix bug 2141. See issue #735 for more details. svn path=/trunk/; revision=27394 --- reactos/subsystems/win32/win32k/ntuser/winpos.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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); }