From 77e1b07f3015ca5d5b3de99e9474efa4fb711b0c Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Thu, 14 Feb 2019 22:42:55 +0100 Subject: Preserve transparency when copying a DIB to/from the clipboard. In order to get the alpha channel when encoding BMP images from a surface, we need to supply bmp=32 in the encoder options. --- widget/windows/nsDataObj.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'widget') diff --git a/widget/windows/nsDataObj.cpp b/widget/windows/nsDataObj.cpp index ee2db7b65..a19dcb182 100644 --- a/widget/windows/nsDataObj.cpp +++ b/widget/windows/nsDataObj.cpp @@ -921,7 +921,7 @@ nsDataObj::GetDib(const nsACString& inFlavor, if ( image ) { nsCOMPtr imgTools = do_CreateInstance("@mozilla.org/image/tools;1"); - nsAutoString options; + nsAutoString options(NS_LITERAL_STRING("bpp=32;")); if (aFormat.cfFormat == CF_DIBV5) { options.AppendLiteral("version=5"); } else { @@ -1580,7 +1580,7 @@ HRESULT nsDataObj::DropImage(FORMATETC& aFE, STGMEDIUM& aSTG) nsCOMPtr imgTools = do_CreateInstance("@mozilla.org/image/tools;1"); nsCOMPtr inputStream; rv = imgTools->EncodeImage(image, NS_LITERAL_CSTRING(IMAGE_BMP), - NS_LITERAL_STRING("version=3"), + NS_LITERAL_STRING("bpp=32;version=3"), getter_AddRefs(inputStream)); if (NS_FAILED(rv) || !inputStream) { return E_FAIL; -- cgit v1.2.3