mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
- CreateIcon: create color bitmap only if bitsPixel specifies a non-monochrome icon
- CreateCursorIconHandle: set hotspot for icons based on the bitmap size - Fixes seven user32 cursoricon winetests svn path=/trunk/; revision=40528
This commit is contained in:
@@ -202,11 +202,19 @@ CreateIcon(
|
||||
{
|
||||
return (HICON)0;
|
||||
}
|
||||
IconInfo.hbmColor = CreateBitmap(nWidth, nHeight, cPlanes, cBitsPixel, XORbits);
|
||||
if(!IconInfo.hbmColor)
|
||||
|
||||
if (cBitsPixel == 1)
|
||||
{
|
||||
DeleteObject(IconInfo.hbmMask);
|
||||
return (HICON)0;
|
||||
IconInfo.hbmColor = (HBITMAP)0;
|
||||
}
|
||||
else
|
||||
{
|
||||
IconInfo.hbmColor = CreateBitmap(nWidth, nHeight, cPlanes, cBitsPixel, XORbits);
|
||||
if(!IconInfo.hbmColor)
|
||||
{
|
||||
DeleteObject(IconInfo.hbmMask);
|
||||
return (HICON)0;
|
||||
}
|
||||
}
|
||||
|
||||
return NtUserCreateCursorIconHandle(&IconInfo, FALSE);
|
||||
|
||||
@@ -541,6 +541,7 @@ NtUserCreateCursorIconHandle(PICONINFO IconInfo OPTIONAL, BOOL Indirect)
|
||||
Status = MmCopyFromCaller(&CurIcon->IconInfo, IconInfo, sizeof(ICONINFO));
|
||||
if(NT_SUCCESS(Status))
|
||||
{
|
||||
/* Copy bitmaps and size info */
|
||||
if(Indirect)
|
||||
{
|
||||
CurIcon->IconInfo.hbmMask = BITMAP_CopyBitmap(CurIcon->IconInfo.hbmMask);
|
||||
@@ -560,11 +561,18 @@ NtUserCreateCursorIconHandle(PICONINFO IconInfo OPTIONAL, BOOL Indirect)
|
||||
if (CurIcon->IconInfo.hbmColor == NULL)
|
||||
{
|
||||
CurIcon->Size.cx = psurfBmp->SurfObj.sizlBitmap.cx;
|
||||
CurIcon->Size.cy = psurfBmp->SurfObj.sizlBitmap.cy / 2;
|
||||
CurIcon->Size.cy = psurfBmp->SurfObj.sizlBitmap.cy;
|
||||
}
|
||||
SURFACE_UnlockSurface(psurfBmp);
|
||||
GDIOBJ_SetOwnership(CurIcon->IconInfo.hbmMask, NULL);
|
||||
}
|
||||
|
||||
/* Calculate icon hotspot */
|
||||
if (CurIcon->IconInfo.fIcon == TRUE)
|
||||
{
|
||||
CurIcon->IconInfo.xHotspot = CurIcon->Size.cx >> 1;
|
||||
CurIcon->IconInfo.yHotspot = CurIcon->Size.cy >> 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user