Fixed garbage in toolbar buttons

Dimitrie O. Paun dpaun at rogers.com
Mon Oct 14 09:40:16 CDT 2002


On October 13, 2002 12:57 pm, Carlos wrote:
> Changelog:
>  * Changed SRCPAINT to SRCCOPY, the first time what
>    it paints in hImageDC.


>     } else if (himl->hbmMask) {
>          BitBlt( hImageDC, 0, 0, cx, cy, hMaskListDC, lx, ly, SRCAND );
> -        BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCPAINT );
> +	   if (!bIsTransparent && himl->hbmMask) {
> +            BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCPAINT );
> +	   } else {
> +	      BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCCOPY );
> +	   }

This can not be right. It is equivalent to:

            PatBlt( hImageDC, 0, 0, cx, cy, PATCOPY);
            SelectObject(hImageDC, hOldBrush);
        }
-    } else if (himl->hbmMask) {
+    } else if (himl->hbmMask && !(fStyle & ILD_TRANSPARENT) && clrBk != CLR_NONE) {
         BitBlt( hImageDC, 0, 0, cx, cy, hMaskListDC, lx, ly, SRCAND );
         BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCPAINT );
     } else {
        /* the image is opaque, just copy it */
        TRACE("    - Image is opaque\n");
        BitBlt( hImageDC, 0, 0, cx, cy, hImageListDC, lx, ly, SRCCOPY);
    }


That is, if we have ILD_TRANSPARENT set, or clrBk == CLR_NONE, we go the
SRCCOPY route, ignoring the mask, which is just the opposite of what we 
need to do!

Alexandre, please do not apply it.

-- 
Dimi.




More information about the wine-devel mailing list