* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: painting.c,v 1.54 2003/12/27 15:09:51 navaraf Exp $
+ * $Id: painting.c,v 1.55 2003/12/28 10:56:20 gvg Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
/* PRIVATE FUNCTIONS **********************************************************/
VOID FASTCALL
-IntValidateParent(PWINDOW_OBJECT Child)
+IntValidateParent(PWINDOW_OBJECT Child, HRGN ValidRegion)
{
HWND Parent;
PWINDOW_OBJECT ParentWindow;
*/
OffsetX = Child->WindowRect.left - ParentWindow->WindowRect.left;
OffsetY = Child->WindowRect.top - ParentWindow->WindowRect.top;
- NtGdiOffsetRgn(Child->UpdateRegion, OffsetX, OffsetY );
+ NtGdiOffsetRgn(ValidRegion, OffsetX, OffsetY );
NtGdiCombineRgn(ParentWindow->UpdateRegion, ParentWindow->UpdateRegion,
- Child->UpdateRegion, RGN_DIFF);
+ ValidRegion, RGN_DIFF);
/* FIXME: If the resulting region is empty, remove fake posted paint message */
- NtGdiOffsetRgn(Child->UpdateRegion, -OffsetX, -OffsetY);
+ NtGdiOffsetRgn(ValidRegion, -OffsetX, -OffsetY);
}
}
IntReleaseWindowObject(ParentWindow);
if (ValidateParent)
{
- IntValidateParent(Window);
+ IntValidateParent(Window, Window->UpdateRegion);
}
/*
if (Window->UpdateRegion != NULL && Flags & RDW_ERASENOW)
{
/* Validate parent covered by region. */
- IntValidateParent(Window);
+ IntValidateParent(Window, Window->UpdateRegion);
}
/*
if (Window->UpdateRegion != NULL)
{
MsqDecPaintCountQueue(Window->MessageQueue);
- IntValidateParent(Window);
+ IntValidateParent(Window, Window->UpdateRegion);
NtGdiDeleteObject(Window->UpdateRegion);
Window->UpdateRegion = NULL;
}
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-/* $Id: winpos.c,v 1.75 2003/12/27 15:09:51 navaraf Exp $
+/* $Id: winpos.c,v 1.76 2003/12/28 10:56:20 gvg Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* we don't have to crop (can't take anything away from an empty
* region...)
*/
- if (!(WinPos.flags & (SWP_NOSIZE | SWP_NOZORDER)) && RgnType != ERROR &&
+ if (!(WinPos.flags & SWP_NOSIZE) && RgnType != ERROR &&
RgnType != NULLREGION)
{
RECT ORect = OldClientRect;
* to create a copy of CopyRgn and pass that. We need CopyRgn later
*/
HRGN ClipRgn = NtGdiCreateRectRgn(0, 0, 0, 0);
+
NtGdiCombineRgn(ClipRgn, CopyRgn, NULL, RGN_COPY);
Dc = NtUserGetDCEx(Wnd, ClipRgn, DCX_WINDOW | DCX_CACHE |
DCX_INTERSECTRGN | DCX_CLIPSIBLINGS);
CopyRect.left + (OldWindowRect.left - NewWindowRect.left),
CopyRect.top + (OldWindowRect.top - NewWindowRect.top), SRCCOPY);
NtUserReleaseDC(Wnd, Dc);
+ IntValidateParent(Window, CopyRgn);
}
}
else