Module: wine Branch: master Commit: 1826530974621d0b9cbdad7397f4c292b2023bdd URL: http://source.winehq.org/git/wine.git/?a=commit;h=1826530974621d0b9cbdad7397...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Oct 14 10:13:58 2010 +0200
comctl32: Use the appropriate color format when loading a DIB in ImageList_LoadImageW.
---
dlls/comctl32/imagelist.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c index 9396b95..2e1581e 100644 --- a/dlls/comctl32/imagelist.c +++ b/dlls/comctl32/imagelist.c @@ -1907,8 +1907,11 @@ ImageList_LoadImageW (HINSTANCE hi, LPCWSTR lpbmp, INT cx, INT cGrow, }
if (uType == IMAGE_BITMAP) { - BITMAP bmp; - GetObjectW (handle, sizeof(BITMAP), &bmp); + DIBSECTION dib; + UINT color; + + if (GetObjectW (handle, sizeof(dib), &dib) == sizeof(BITMAP)) color = ILC_COLOR; + else color = dib.dsBm.bmBitsPixel;
/* To match windows behavior, if cx is set to zero and the flag DI_DEFAULTSIZE is specified, cx becomes the @@ -1919,13 +1922,12 @@ ImageList_LoadImageW (HINSTANCE hi, LPCWSTR lpbmp, INT cx, INT cGrow, if (uFlags & DI_DEFAULTSIZE) cx = GetSystemMetrics (SM_CXICON); else - cx = bmp.bmHeight; + cx = dib.dsBm.bmHeight; }
- nImageCount = bmp.bmWidth / cx; + nImageCount = dib.dsBm.bmWidth / cx;
- himl = ImageList_Create (cx, bmp.bmHeight, ILC_MASK | ILC_COLOR, - nImageCount, cGrow); + himl = ImageList_Create (cx, dib.dsBm.bmHeight, ILC_MASK | color, nImageCount, cGrow); if (!himl) { DeleteObject (handle); return NULL;