Fixes a regression introduced by 61b9209221d28d5d02379791ac1316c1fc2ca3b7.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50454 Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/comctl32/imagelist.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c index a6d9c73..170320c 100644 --- a/dlls/comctl32/imagelist.c +++ b/dlls/comctl32/imagelist.c @@ -290,6 +290,24 @@ static BOOL add_with_alpha( HIMAGELIST himl, HDC hdc, int pos, int count, }
add_dib_bits( himl, pos, count, width, height, info, mask_info, bits, mask_bits ); + + if (hbmMask && himl->hbmMask) + { + HDC hdcTemp = CreateCompatibleDC(0); + POINT pt; + INT i; + + SelectObject(hdcTemp, hbmMask); + for (i = 0; i < count; i++) + { + imagelist_point_from_index( himl, pos + i, &pt ); + BitBlt( himl->hdcMask, pt.x, pt.y, width, height, hdcTemp, i * width, 0, SRCCOPY ); + + /* Remove the background from the image */ + BitBlt( himl->hdcImage, pt.x, pt.y, width, height, himl->hdcMask, pt.x, pt.y, 0x220326 ); /* NOTSRCAND */ + } + DeleteDC(hdcTemp); + } ret = TRUE;
done:
Is it possible to test this?
On 04/01/2021 20:19, Nikolay Sivov wrote:
Is it possible to test this?
Good point, it seems it's somewhat wrong, and the current behavior appears correct. Unfortunately, this doesn't explain why it's not transparent on Wine, but is on Windows, even though the tests behavior is identical. Presumably the cause is somewhere else.
Please ignore the patch.