user32: Intersect with passed dirty rectangle while blitting.
This commit is contained in:
parent
9b7b3ef1c4
commit
62019e6d3a
|
@ -3392,18 +3392,18 @@ BOOL WINAPI UpdateLayeredWindowIndirect( HWND hwnd, const UPDATELAYEREDWINDOWINF
|
||||||
cy = info->psize->cy;
|
cy = info->psize->cy;
|
||||||
flags &= ~SWP_NOSIZE;
|
flags &= ~SWP_NOSIZE;
|
||||||
}
|
}
|
||||||
TRACE( "moving window %p pos %d,%d %dx%x\n", hwnd, x, y, cx, cy );
|
TRACE( "moving window %p pos %d,%d %dx%d\n", hwnd, x, y, cx, cy );
|
||||||
SetWindowPos( hwnd, 0, x, y, cx, cy, flags );
|
SetWindowPos( hwnd, 0, x, y, cx, cy, flags );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->hdcSrc)
|
if (info->hdcSrc)
|
||||||
{
|
{
|
||||||
RECT rect;
|
|
||||||
HDC hdc = GetDCEx( hwnd, 0, DCX_CACHE );
|
HDC hdc = GetDCEx( hwnd, 0, DCX_CACHE );
|
||||||
|
|
||||||
if (hdc)
|
if (hdc)
|
||||||
{
|
{
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
|
RECT rect;
|
||||||
|
|
||||||
GetClientRect( hwnd, &rect );
|
GetClientRect( hwnd, &rect );
|
||||||
if (info->pptSrc)
|
if (info->pptSrc)
|
||||||
|
@ -3411,10 +3411,13 @@ BOOL WINAPI UpdateLayeredWindowIndirect( HWND hwnd, const UPDATELAYEREDWINDOWINF
|
||||||
x = info->pptSrc->x;
|
x = info->pptSrc->x;
|
||||||
y = info->pptSrc->y;
|
y = info->pptSrc->y;
|
||||||
}
|
}
|
||||||
/* FIXME: intersect rect with info->prcDirty */
|
|
||||||
TRACE( "copying window %p pos %d,%d\n", hwnd, x, y );
|
if (!info->prcDirty || (info->prcDirty && IntersectRect(&rect, &rect, info->prcDirty)))
|
||||||
BitBlt( hdc, rect.left, rect.top, rect.right, rect.bottom,
|
{
|
||||||
info->hdcSrc, rect.left + x, rect.top + y, SRCCOPY );
|
TRACE( "copying window %p pos %d,%d\n", hwnd, x, y );
|
||||||
|
BitBlt( hdc, rect.left, rect.top, rect.right, rect.bottom,
|
||||||
|
info->hdcSrc, rect.left + x, rect.top + y, SRCCOPY );
|
||||||
|
}
|
||||||
ReleaseDC( hwnd, hdc );
|
ReleaseDC( hwnd, hdc );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue