diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-02-14 22:42:55 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-02-14 22:42:55 +0100 |
commit | 77e1b07f3015ca5d5b3de99e9474efa4fb711b0c (patch) | |
tree | 6cee6b4472f89f9de7df7b7a9ef5ad8a29b713a3 | |
parent | a6ddde9097fbef2940c6a4f785dae15978ef2533 (diff) | |
download | UXP-77e1b07f3015ca5d5b3de99e9474efa4fb711b0c.tar UXP-77e1b07f3015ca5d5b3de99e9474efa4fb711b0c.tar.gz UXP-77e1b07f3015ca5d5b3de99e9474efa4fb711b0c.tar.lz UXP-77e1b07f3015ca5d5b3de99e9474efa4fb711b0c.tar.xz UXP-77e1b07f3015ca5d5b3de99e9474efa4fb711b0c.zip |
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.
-rw-r--r-- | widget/windows/nsDataObj.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
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<imgITools> 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<imgITools> imgTools = do_CreateInstance("@mozilla.org/image/tools;1"); nsCOMPtr<nsIInputStream> 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; |