Module: wine Branch: master Commit: 32ca9b27c376af255dacd67c2744b3b5285b8cf1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=32ca9b27c376af255dacd67c27...
Author: Wilfried Pasquazzo wilfried.pasquazzo@gmail.com Date: Tue Sep 22 14:20:28 2009 +0000
user32: Correct scaling of DrawIcon.
---
dlls/user32/cursoricon.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c index 48a1a59..23de6a5 100644 --- a/dlls/user32/cursoricon.c +++ b/dlls/user32/cursoricon.c @@ -1715,7 +1715,9 @@ BOOL WINAPI DrawIcon( HDC hdc, INT x, INT y, HICON hIcon ) /* Do the alpha blending render */ premultiply_alpha_channel(dibBits, xorBitmapBits, dibLength); hBitTemp = SelectObject( hMemDC, hXorBits ); - GdiAlphaBlend(hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, + /* Destination width/height has to be "System Large" size */ + GdiAlphaBlend(hdc, x, y, GetSystemMetrics(SM_CXICON), + GetSystemMetrics(SM_CYICON), hMemDC, 0, 0, ptr->nWidth, ptr->nHeight, pixelblend); SelectObject( hMemDC, hBitTemp ); } @@ -1729,9 +1731,13 @@ BOOL WINAPI DrawIcon( HDC hdc, INT x, INT y, HICON hIcon ) if (hXorBits && hAndBits) { hBitTemp = SelectObject( hMemDC, hAndBits ); - BitBlt( hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, 0, 0, SRCAND ); + StretchBlt( hdc, x, y, GetSystemMetrics(SM_CXICON), + GetSystemMetrics(SM_CYICON), hMemDC, 0, 0, + ptr->nWidth, ptr->nHeight, SRCAND ); SelectObject( hMemDC, hXorBits ); - BitBlt(hdc, x, y, ptr->nWidth, ptr->nHeight, hMemDC, 0, 0,SRCINVERT); + StretchBlt( hdc, x, y, GetSystemMetrics(SM_CXICON), + GetSystemMetrics(SM_CYICON), hMemDC, 0, 0, + ptr->nWidth, ptr->nHeight, SRCINVERT ); SelectObject( hMemDC, hBitTemp ); } }