According to my tests, on v6 comctl32, here is the disabled toolbar button appearance in different situation:
* 32bpp with alpha channel: Grayscale (This is not supported before v6) * 32bpp without alpha channel ("without alpha channel" means each pixel's alpha value is set to 0): Solid color * not 32bpp (maybe 24bpp, 16bpp etc.): Solid color
This patch handle the first situation for wine.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=24784 Signed-off-by: Ziqing Hui zhui@codeweavers.com --- dlls/comctl32/toolbar.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-)
I think it might be possible to replace some of the logic in toolbar with correct DrawIndirect() arguments, potentially fixing or extending Imagelist() implementation. For example, does it need to check 'has_alpha' on every draw or could imagelist do that once, until bitmap is replaced.