summaryrefslogtreecommitdiffstats
path: root/widget/windows
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-02-14 22:42:55 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-02-14 22:42:55 +0100
commit77e1b07f3015ca5d5b3de99e9474efa4fb711b0c (patch)
tree6cee6b4472f89f9de7df7b7a9ef5ad8a29b713a3 /widget/windows
parenta6ddde9097fbef2940c6a4f785dae15978ef2533 (diff)
downloadUXP-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.
Diffstat (limited to 'widget/windows')
-rw-r--r--widget/windows/nsDataObj.cpp4
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;