https://bugs.winehq.org/show_bug.cgi?id=35375
--- Comment #14 from Michael Müller michael@fds-team.de --- There is another problem with this patch. The MSDN clearly mentions that LoadIconMetric is supposed to downscale if possible:
If an exact size match cannot be found and a larger icon is available, a new icon is created by scaling the larger version down to the desired size.
This is not the case for my implementation: LoadImageW -> CURSORICON_Load -> CURSORICON_FindBestIconRes -> CURSORICON_FindBestIcon:
---- for ( i = 0; iTotalDiff && get_entry( dir, size, i, &cx, &cy, &bits ); i++ ) { iTempXDiff = abs(width - cx); iTempYDiff = abs(height - cy);
if(iTotalDiff > (iTempXDiff + iTempYDiff)) { iXDiff = iTempXDiff; iYDiff = iTempYDiff; iTotalDiff = iXDiff + iYDiff; } } ----
The current implementation uses the closest match instead of downscaling if possible. This is the main reason why I didn't this patch so far, it will most probably need further changes in the underlying functions to work correctly.
If the current approach is still suitable for the development branch, I can fix the problem with LR_LOADFROMFILE and send it upstream.